1 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
3 * cbinding.h: Regenerated.
5 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
7 * value.cpp: Don't ever use memcmp for structure comparison - it fails
8 randomly if the structures have padding. Also special case float/double
9 comparison to take epsilon into account. Fixes random failures in MS
13 * grid.h: Add [in]equality operators.
20 * propertypath.h: Make inequality operator be the exact opposite of the
21 equality operator, negating the equality operator (even if code was
22 already correct, but duplicated - this way there's a lesser chance of
23 the equality operators getting out of sync)
25 2009-11-18 Jeffrey Stedfast <fejj@novell.com>
27 * textbox.cpp (TextBoxBase::OnMouseMove): Update the primary
28 selection clipboard as the selection changes. Fixes lewing's frown
29 by turning it upside down.
31 2009-11-18 Larry Ewing <lewing@novell.com>
33 * runtime.cpp (PaintToDrawable): fix the lame expose color logic
36 2009-11-18 Larry Ewing <lewing@novell.com>
41 * uielement.cpp: check the status of the pattern to avoid drawing
42 with it if we are in an error state. And fix a backwards condition
43 in the previous patch.
45 * uielement.cpp: initialize the transforms.
47 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
49 * runtime.cpp: We want to parse MOONLIGHT_DEBUG if LOGGING is defined
52 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
57 * fontmanager.cpp: Tune ifdefs to allow configuring with logging but
58 without debug support.
60 * audio.cpp: Fix uninitialized variable warning (used in logging).
62 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
66 * eventargs.cpp|h: Rename MarkerReachedEventArgs to
67 TimelineMarkerRoutedEventArgs to better match managed code, and move
68 the class to eventargs.cpp|h together with the rest of the event args
74 * type-generated.cpp: Regenerated.
76 2009-11-17 Larry Ewing <lewing@novell.com>
79 * multiscaleimage.cpp (RenderCollection):
80 * uielement.cpp (PostRender): Check the status of the pattern
81 before trying to draw with it in case something has gone wrong.
83 Fixes DRT 1 and and a couple of sites by not putting the cairo
84 context into an invalid state.
86 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
88 * playlist.cpp: ParseASX2: don't verify the end of the uri, there is
89 no guarantee the uri has a specific ending.
91 2009-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
93 * mediaplayer.cpp: Open: Call SetSelected and ref on the video stream
94 we actually select, and not all of video streams we loop over.
96 2009-11-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
98 * mediaelement.h: Added LogReady event.
100 * eventargs.cpp|h: Added a LogReadyRoutedEventArgs class.
102 * enums.cpp|h: Added LogSource enum.
108 * type-generated.cpp: Regenerated.
110 2009-11-17 Jeffrey Stedfast <fejj@novell.com>
114 * textbox.cpp (KeyPressPageUp, KeyPressPageDown): Silverlight
115 seems to set these to handled even if no cursor change took place.
117 2009-11-17 Sebastien Pouliot <sebastien@ximian.com>
119 * security.c: Do not consider System.Xml.dll and Microsoft.
120 VisualBasic.dll as platform code since, right now, they do not
121 contain any [SecurityCritical] nor [SecuritySafeCritical] code
123 2009-11-17 Alan McGovern <amcgovern@novell.com>
126 * grid.cpp: We need to store the sizes of all the grid
127 segments immediately after we finish measuring them. These
128 sizes are used as our base values when deciding if we should
129 expand star rows/cols. The rules for expanding star
130 rows/cols now make sense :)
132 2009-11-17 Jeffrey Stedfast <fejj@novell.com>
134 * uri.cpp (Combine): Use different combining rules for 1.0 apps
135 (if the relative_path starts with a '/', always replace the path
136 rather than combining).
138 2009-11-17 Alan McGovern <amcgovern@novell.com>
140 * grid.cpp: Remove a bunch of code from Grid::ArrangeOverride
141 which isn't required anymore.
143 2009-11-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
145 * mediaelement.cpp: Fix compiler warning.
147 2009-11-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
149 * pipeline-ui.cpp|h: Distinguish between user initiated download
150 requests and automatic download requests - if the user asked us to
151 download the codecs, show the ui even if the user previously selected
152 to not be asked about codec downloads again.
154 * mediaelement.cpp: When requesting a codec download, indicate that the
155 user did not initiate this request, it's an automatic request.
157 2009-11-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
159 * mms-downloader.cpp: Revert previous fix, it breaks MS DRT 938.
161 2009-11-16 Alan McGovern <amcgovern@novell.com>
167 * dependencyproperty.g.cpp: Revert r146166 as it has some
168 bizarre side effects.
170 2009-11-16 Chris Toshok <toshok@ximian.com>
172 * dependencyobject.h (class EventObject): we need to make
173 AddHandler virtual so UIElement can override it and do special
174 things when Loaded is poked.
176 * uielement.h,cpp: optimize the Loaded tree walking code, reducing
177 the number of nodes we visit by 2-3 orders of magnitude.
179 * list.h,cpp (List::Prepend): add an override that allows you to
180 prepend an entire list onto the front of another one. used in the
181 Loaded tree walking code.
183 2009-11-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
185 * mms-downloader.cpp: Play: if we're already playing, don't send
186 another play request to the server, it might confuse the server.
189 2009-11-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
191 * dependencyobject.cpp: Remove some debug spew.
193 2009-11-14 Larry Ewing <lewing@novell.com>
196 * mediaelement.cpp: fix mediaelement rendering to match image and
197 clean up the code in both a little bit.
199 2009-11-14 Larry Ewing <lewing@novell.com>
201 * shape.cpp (MeasureOverride): fix a bug that slipped in due to
202 the previous shape changes.
204 Fixes 653 and some unit tests.
206 2009-11-13 Jeffrey Stedfast <fejj@novell.com>
208 * mediaelement.cpp (Pause): Seems that playlist can actually be
209 null here when the downloader fails, so properly handle null
210 situations instead of asserting.
212 2009-11-13 Jeffrey Stedfast <fejj@novell.com>
214 * pipeline-ui.cpp (AcceptClicked): Don't need to strdup the
215 CODEC_URL string - just pass it as an argument to
217 (ToggleEula): When toggling the EULA on, make the dialog
218 resizable. Likewise, when hiding the EULA, disable resize.
219 (Show): Make the EULA scrollview expand/fill available space so
220 that when the dialog gets resized, it expands as well.
222 2009-11-13 Larry Ewing <lewing@novell.com>
224 * shape.cpp: rework rectangle and ellipse layout logic so that it
225 plays lightly nicer with other things. Fix stretch invalidation
228 Fixes MS 92 and moon 404 as well as some resizing issues visible
231 2009-11-13 Alan McGovern <amcgovern@novell.com>
233 * dependencyproperty.g.cpp: regen.
238 * template.cpp: DOs which are expanded from a ControlTemplate
239 need to keep track of the 'templateBindingSource' so that we
240 can attach new TemplateBindings later. This value is stored
241 in addition to 'IsTemplateItem' as DOs can be expanded from
242 templates which are not ControlTemplates (i.e.
245 2009-11-13 Alan McGovern <amcgovern@novell.com>
249 * type-generated.cpp:
250 * frameworkelement.h:
251 * frameworkelement.cpp: Move the invoking of OnApplyTemplate
252 from Control to FrameworkElement as ContentPresenter (a
253 FrameworkElement) needs to have its OnApplyTemplate method
256 2009-11-13 Alan McGovern <amcgovern@novell.com>
258 * contentcontrol.cpp: Call the correct base method in the
259 GetDefaultTemplate override. We should also be returning
260 NULL instead of false.
262 2009-11-13 Alan McGovern <amcgovern@novell.com>
264 * runtime.cpp: When we attach a layer we need to set
265 needs_measure and needs_arrange to true otherwise we won't
266 do a layout pass until something else invalidates... if it
269 2009-11-13 Alan McGovern <amcgovern@novell.com>
271 * dependencyobject.cpp: Fix a case where a user-registered DP
272 was (incorrectly) setting the Surface if it's type was a DO.
274 2009-11-13 Alan McGovern <amcgovern@novell.com>
276 * value.cpp: If the DO is null, don't try to clone it.
278 2009-11-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
280 * dependencyobject.cpp: Improve event handling to not create the
281 'events' field except when handlers are added. This will improve
282 memory usage slightly, and enable a few fast-paths (null checks
283 only) when there are no event handlers.
285 2009-11-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
287 * playlist.cpp: Fix compile error.
289 2009-11-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
291 * pipeline.cpp: If the PlaylistParser doesn't have enough data
292 to parse the source, retry later instead of failing.
294 * playlist.cpp|h: TryFixError: need to know the total read size
295 when we fix up characters after the first read (i.e. if the asx
296 file is bigger than the buffer size).
300 2009-11-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
302 * uielement.cpp: WalkTreeForLoadedHandlers cache application
303 and deployment for the method's duration.
305 2009-11-12 Geoff Norton <gnorton@novell.com>
307 * utils.cpp: We need to special case the case-sensitivity handling
308 of debug symbol files as well, to support the soft debugger.
310 2009-11-12 Larry Ewing <lewing@novell.com>
312 Fix image stretching and alignment so that 641, 802, 889, and 921
313 are all doing the right thing.
315 * frameworkelement.cpp (Arrange): when applying alignment rules
316 take the minimum size into account not the stretched size.
318 * media.cpp (Render): rework the rendering logic to match the DRTS.
319 (ComputeActualSize): in the canvas case we do use the constrained
320 size not the minimum size.
322 2009-11-12 Jeffrey Stedfast <fejj@novell.com>
324 * media.cpp (Image::OnPropertyChanged): Only report errors if we
325 are being parsed by the xaml parser.
327 * pipeline.cpp (Initialize): If GetResource() fails, report
330 * mediaelement.cpp (SetUriSource): Set a new bitflag,
331 Initializing, before initializing the playlist so that if it
332 errors out we can properly emit MediaFailed events. Unset the flag
334 (SetDemuxerSource): Same.
335 (SetStreamSource): Here too.
336 (SetSource): And here.
337 (OpeningHandler): Unset the Initializing flag.
338 (MediaErrorHandler): If we are initializing, emit MediaFailed even
339 if the state is Closed.
341 * glyphs.cpp (OnPropertyChanged): Only set MoonError and emit
342 ParserErrors when we are in the xaml parser.
344 * bitmapimage.cpp (UriSourceChanged): If GetResource() fails, call
345 DownloaderFailed() which will do proper cleanup and emit
347 (OnPropertyChanged): Only set MoonError for Uri source changes if
348 we are in the xaml parser.
350 * uri.h (IsInvalidPath): Fixed to also return true for "\fu".
351 (IsUncPath): Now returns true as long as the first character is
352 "\", it no lonegr requires "\\".
354 * application.cpp (GetResource): Now returns bool so that it can
355 return false if there was an error.
357 * xaml.cpp (start_element): Set IsBeingParsed() on DO's to true.
358 (end_element_handler): And set it back to false here.
360 * dependencyobject.h: Added IsBeingParsed state so that objects
361 can check it when their property values change to see if they need
362 to do special processing. Kind of a gross hack but it is needed in
363 order to avoid emitting exceptions for Uri property changes in
364 various elements when an invalid uri is set normally (whereas they
365 need to emit errors when being parsed from xaml).
367 2009-11-12 Andreia Gaita <avidigal@novell.com>
369 * deployment.cpp: don't unref the application after creating it,
370 it gets unreffed when SetCurrentApplication is called with a new
371 one or when deployment shuts down.
373 2009-11-11 Chris Toshok <toshok@ximian.com>
375 * utils.h,cpp (managed_unzip_stream_to_stream_first_file): new
376 method, basically the same as managed_unzip_stream_to_stream, only
377 it always unzips the first file in the zip.
379 * deployment.h (class ExtensionPart): superclass is ExternalPart,
380 not DependencyObject.
382 2009-11-11 Chris Toshok <toshok@ximian.com>
384 * timeline.cpp (DispatcherTimer::Stop): DispatcherTimer.Stop is
385 available in managed-land and is callable more than once
386 apparently (silverlight.net is doing it). we need to not crash in
387 this case, so only try to stop the clock if it's not null.
391 2009-11-11 Larry Ewing <lewing@novell.com>
393 Fix hit testing (via InsideLayoutClip) on layout clipped elements
394 where the parent may not have a clip.
396 * layoutinformation.cpp (GetClip): fix the composite offset
399 * frameworkelement.cpp (FindElementsInHostCoordinates): use the
400 current visibility when hittesting.
402 * uielement.cpp (PostRender): render the layout clip when
403 rendering clipping in debug mode.
405 2009-11-11 Larry Ewing <lewing@novell.com>
407 * grid.cpp (ArrangeOverride): remove the visibility checks from
408 grid they are handled in the layout logic.
410 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
412 * dependencyproperty.cpp|h: Add GetDependencyProperty overloads which
413 take a Type instance to avoid calling Deployment::GetCurrent as much.
414 Update according to Type/Value API changes.
425 * contentcontrol.cpp:
426 * dependencyobject.cpp: Update according to Type/Value API changes.
428 * type.cpp|h|in: Remove all the static convenience methods that were
429 accessing Deployment::GetCurrent, and add a deployment field to the
430 Type instance so that we can keep the instance methods at least.
432 * value.cpp|h|in: Make the Is method take a deployment parameter.
434 * xaml.cpp|h: Store a deployment instance on the XamlParserInfo so that
435 we don't have to use Deployment::GetCurrent that much. Updated
436 according to Type API changes.
438 * type-generated.cpp: Regenerated.
440 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
442 * value.h: Don't include cairo.h nor string.h.
445 * writeablebitmap.h: Include cairo.h.
446 * file-downloader.cpp: Include string.h.
448 2009-11-11 Larry Ewing <lewing@novell.com>
450 * frameworkelement.cpp: In measure make sure we track the last
451 size we were measured at even if we are collapsed.
452 In Arrange don't descend into the tree if we are not visible but
455 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
457 * value.h: Don't include cairo.h nor string.h.
460 * writeablebitmap.h: Include cairo.h.
461 * file-downloader.cpp: Include string.h.
463 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
465 * dependencyobject.cpp|h: Inline GetDeployment when SANITY isn't
468 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
470 * dependencyobject.cpp: DependencyObject::Dispose (): we need to clear out
471 the parent, we might still be alive after our parent has died, so don't
472 crash if somebody does an upward tree walk in that case.
474 2009-11-11 Alan McGovern <amcgovern@novell.com>
476 * frameworkelement.cpp: If a template is applied when
477 FE::Measure is called, Surface::needs_measure will be set to
478 true even though the FE will not have a dirty measure when
479 the function completes. This can result in us having an
480 empty measure_list with Surface::needs_measure still set to
481 true, thus preventing us from arranging any elements and
482 hitting the 250 max passes. r: lewing
484 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
486 * value.h|in: Make checked_get_subclass and checked_get_exact only
487 check in SANITY or DEBUG builds.
489 * type.cpp|h|in: Only define IsSubclassOrSuperclassOf in SANITY or
492 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
494 * type.cpp|h|in: Remove unused method.
496 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
498 * layoutinformation.cpp: Fix a g++ warning.
500 2009-11-11 Larry Ewing <lewing@novell.com>
502 * uielement.cpp (DoArrange): if we haven't been arranged yet but
503 we have a parent be sure to invalidate the parent before exiting.
505 * frameworkelement.cpp: set the layout slot before calling
512 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
514 * fontmanager.cpp|h: Cache system fonts.
518 2009-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
521 * list.cpp|h: Inline a few methods which are used very often.
523 2009-11-10 Larry Ewing <lewing@novell.com>
525 * frameworkelement.cpp:
526 * frameworkelement.h:
527 * uielement.cpp: Rework hit testing to use InsideObject so that we
528 don't have to guess at fill and stroke values when doing testing.
529 Consider the global clip on short circuiting and the layout clip
533 * textblock.h: Implement the rules for textblock hitting.
538 * layoutinformation.cpp:
541 * shape.cpp: Rework to use the new clip helper methods.
545 2009-11-10 Jackson Harper <jackson@ximian.com>
547 * resources.cpp: Hack that allows us to add the same item to
548 multiple resource dictionaries.
552 2009-11-10 Larry Ewing <lewing@novell.com>
556 * brush.cpp: Get overly aggressive about invalidations.
560 * frameworkelement.cpp: rework the values we store for
561 layout. Keep track of the raw results of measure and feed them
562 back into the arrange along with the public desired size. Allow
563 Actual* to be completely computed for elements that operate that
564 way. Walk up the tree when rendering LayoutClip Make canvas
565 slightly less special.
568 * textblock.h: Make Actual* a computed value. Rework the
582 * usercontrol.cpp: rework the layout output now that we are
583 storing our hidden desires.
585 * runtime.cpp: disable ftb for now. Use image surface by
590 2009-11-10 Alan McGovern <amcgovern@novell.com>
593 * grid.cpp: Revert the grid changes in r145839 as they
594 interact badly with upcoming layout fixes. r: lewing
596 2009-11-10 Alan McGovern <amcgovern@novell.com>
599 * grid.cpp: When expanding in MeasureOverride, do not use the
600 value of [Horizontal|Vertical]Aligment. This fixes a case
601 where we would expand and consume too much space. r: lewing
603 2009-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
606 * window-gtk.h|cpp: Add a surface ctor parameter.
608 * runtime.cpp: Pass the surface as a parameter to the ctor instead of
609 setting it afterwards, since the window ctor will end up needing the
612 * cbinding.h|cpp: Regenerated.
616 2009-11-09 Andreia Gaita <avidigal@novell.com>
618 * dependencyproperty.cpp: if the unresolved Target name is not found
619 (i.e., is managed-only, like "(ButtonBase.ClickMode)"), use the type
620 of the current object instead. Fixes bug #543072
624 2009-11-09 Chris Toshok <toshok@ximian.com>
626 * uielement.h (class UIElement): add CacheMode property.
628 * Makefile.am (libmoon_la_SOURCES): add bitmapcache.cpp
629 (libmoon_include_headers): add bitmapcache.h
633 2009-11-09 Chris Toshok <toshok@ximian.com>
635 * runtime.h|.cpp (Surface::Attach): add the loaded handler before
636 calling AttachLayer, as the latter does the tree walk copying the
637 event handlers. Fixes DRT #163.
638 (globally): fix code/comments to not refer to the toplevel element
643 2009-11-09 Chris Toshok <toshok@ximian.com>
645 * uielement.h (class UIElement): mark the Key a MouseLeftButton
646 events as GenerateManagedEventField=true.
650 2009-11-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
658 * frameworkelement.cpp:
659 * deepzoomimagetilesource.cpp: Fix compiler warnings.
663 2009-11-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
665 * dependencyobject.cpp: Initialize variables to null to silence compiler
666 warnings in release builds.
670 2009-11-08 Chris Toshok <toshok@ximian.com>
672 * deployment.h|cpp: stub out some OutOfBrowser classes.
676 2009-11-08 Chris Toshok <toshok@ximian.com>
678 * effect.h|cpp: stub out SL3 effects classes.
682 2009-11-08 Larry Ewing <lewing@novell.com>
684 * incomplete-support.xaml: make things a little prettier by adding
685 margins and max width.
687 2009-11-08 Chris Toshok <toshok@ximian.com>
689 * Makefile.am (runtime.lo): be explicit about dependencies on
690 fullscreen.h and incompletely-support.h so we won't get screwed by
691 build-time dependencies.
695 2009-11-08 Chris Toshok <toshok@ximian.com>
697 * runtime.h|cpp (Surface::Attach): if we're running > SL2, call
698 ShowIncompleteSilverlightSupportMessage.
699 (Surface::ShowIncompleteSilverlightSupportMessage): show our
700 incomplete support message. as an optimization, hook up to
701 Completed on the storyboard to remove the layer when the
702 storyboard is finished.
703 (Surface::HideIncompleteSilverlightSupportMessage): detach the
705 (Surface::ShowFullScreenMessage): use the same optimization of
706 removing the layer when the storyboard completes.
708 * Makefile.am (noinst_PROGRAMS): add xaml-to-header.exe here.
709 (libmoon_include_headers): add deepzoomimagetilesource.h and
710 multiscalesubimage.h here and remove them from EXTRA_DIST. also,
711 remove fullscreen.h entirely since we generate it at build time.
712 (EXTRA_DIST): add fullscreen.xaml and incomplete-support.xaml
713 here, as well as xaml-to-header.cs.
715 * incomplete-support.xaml: new xaml file for our incomplete
718 * fullscreen.xaml: move fullscreen.xaml here.
720 * xaml-to-header.cs: move fullscreen/fullscreen.cs here and
721 massage it to make it reusable for the incomplete-support.xaml
726 2009-11-07 Geoff Norton <gnorton@novell.com>
728 * deployment.cpp: Support connecting to sdb when built in debug
731 2009-11-06 Chris Toshok <toshok@ximian.com>
733 * uielement.h|cpp (UIElement::ElementAdded): simplify this a bit
734 using WalkTreeForLoadedHandlers.
735 (UIElement::RemoveHandler): pass the removal on to the deployment
737 (UIElement::WalkTreeForLoadedHandlers): here there be dragons.
738 (UIElement::OnLoaded): this method does nothing but update the
740 (UIElement::ClearLoaded): we also need to
741 ClearForeachGeneration (UIElement::LoadedEvent) so they'll be
742 copied again when we get added back to the tree.
744 * provider.cpp (InheritedPropertyValueProvider::PropagateInheritedProperty):
745 use Logical tree walk ordering.
747 * tabnavigationwalker.cpp (TabNavigationWalker::Sort): same.
749 * panel.cpp (Panel::OnPropertyChanged): we have to call
750 SetSubtreeObject before calling ElementAdded.
752 * frameworkelement.h|cpp (FrameworkElement::UpdateLayout): remove
753 the block of code that emits the LoadedEvent.
754 (FrameworkElement::RegisterManagedOverrides): add our loaded hook
756 (FrameworkElement::OnLoaded): call our loaded hook.
758 * deployment.h|cpp (class Deployment): a whole bunch of new code
759 to handle management of a list of loaded handlers similar in
760 spirit to LayoutUpdated but much more complicated. bleah.
762 * dependencyobject.h|cpp: a whole bunch of new apis:
763 (ForeachHandler): call a method for every handler for a given
764 event. Optionally only iterate over handlers added since the last
765 time ForeachHandler was called.
766 (ClearForeachGeneration): clears the "last time ForeachHandler was
768 (ForHandler): same as foreach, invoke the same type of handler
769 method, but only on 1 event handler.
770 (HasHandlers): returns true if the object has handlers for a
772 (RemoveHandler): make these virtual because UIElement will
773 override them to remove handlers from the Deployment's loaded
776 * control.cpp (Control::DoApplyTemplate): since we do it after
777 ElementAdded, calling WalkTreeForLoadedHandlers here causes
778 another treewalk, but we need to pass different args to it than
781 * collection.h (enum VisualTreeWalkerDirection): add
784 * collection.h|cpp (class DeepTreeWalker): add a
785 VisualTreeWalkerDirection to this walker as well.
787 * border.cpp (Border::OnPropertyChanged): we have to make sure to
788 call SetSubtreeObject before calling ElementAdded.
790 2009-11-06 Alan McGovern <amcgovern@novell.com>
792 * grid.cpp: There's no need to expand star rows/cols at this
793 point as any time they would expand here, they would be
794 expanded in ArrangeOverride anyway. r: spouliot
796 2009-11-05 Jeffrey Stedfast <fejj@novell.com>
798 * brush.cpp (ImageBrush::OnPropertyChanged): Check that the Source
799 uri is valid and the download policy will allow it.
801 * media.cpp (Image::OnPropertyChanged): Check that the Source uri
802 is valid and the download policy will allow it.
804 * mediaelement.cpp (OnPropertyChanged): Check that the Source uri
805 is valid and the download policy will allow it.
807 * glyphs.cpp (DownloadFont): Now takes a MoonError argument so
808 that (late) download policy errors (caused by a failed
809 Downloader::Open) can propogate up through callers like
810 OnPropertyChanged() or SetParent().
811 (SetParent): Moved here from from SetSurface() so that we can
812 throw an exception when ading the glyphs to the tree if the
814 (OnPropertyChanged): Set the MoonError if the uri is invalid.
816 * bitmapimage.cpp (ValidateDownloadPolicy): New method to check if
817 the uri can be downloaded.
818 (OnPropertyChanged): Check if the Source uri is invalid. If so,
821 * downloader.cpp (ValidateDownloadPolicy): New static method to
822 check that the policy would allow downloading the content at the
823 uri. Split out from Open().
825 * uri.h (IsInvalidPath): New method to check the validity of the
826 path component of a URI.
827 (IsUncPath): New method that returns true if the path begins with \\
831 2009-11-05 Alan McGovern <amcgovern@novell.com>
838 * frameworkelement.h:
839 * contentcontrol.cpp:
840 * frameworkelement.cpp: Templates must be expanded as part of
841 the first step of Measure. To support this, remove the old
842 ApplyTemplateHook managed path and refactor the
843 GetTemplateRoot managed path into a more generic
844 GetDefaultTemplate method. Whenever native code needs to get
845 a default template from managed, this is invoked to retrieve
846 it. ApplyTemplate and OnApplyTemplate have been moved to
847 FrameworkElement itself to simplify the code required to
848 support templateable framework elements (ItemsPresenter for
852 * cbinding.cpp: regen. r: toshok
854 2009-11-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
856 * dependencyproperty.cpp: Fix an uninitialized variable problem.
860 2009-11-05 Jackson Harper <jackson@ximian.com>
862 * playlist.cpp: After we successfully fixup an error we need to
863 reset the error args otherwise the error will be raised when the
864 parsing is all done. Fixes 96x.fm.
868 2009-11-04 Sebastien Pouliot <sebastien@ximian.com>
870 * list.cpp: Remove unused (even in test) code.
871 * tabnavigationwalker.cpp: Complete int/uint fix.
875 2009-11-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
882 * tabnavigationwalker.cpp: Fix warnings when building release builds.
886 2009-11-04 Alan McGovern <amcgovern@novell.com>
891 * control.cpp: 1) Disabling the ComboBox should set
892 IsDropDownOpen to false
893 2) If the dropdown is opened while the ComboBox is disabled,
894 the children of the popup are disabled.
895 3) If the dropdown is open, re-enabling the ComboBox doesn't
896 close the dropdown and also doesn't update the IsEnabled
897 state on the children.
900 2009-11-03 Jackson Harper <jackson@ximian.com>
902 * xaml.cpp: Dont force setting a property in managed if it was
903 registered by a base type.
907 2009-10-29 Chris Toshok <toshok@ximian.com>
909 * messagebox.cpp (message_box_show): don't use
910 gtk_message_dialog_new with user strings, since they might contain
915 2009-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
917 * pipeline.cpp: If we can't seek, reset the 'seeking' flag to false.
921 2009-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
923 * deployment.cpp: Fix typo in return statement.
927 2009-11-03 Alan McGovern <amcgovern@novell.com>
930 * grid.cpp: Rewrite Grid so that it passes the correct sizes
931 to elements spanning Star or Auto segments. Fixes
932 tic-tac-toe. r: lewing
934 2009-11-02 Alan McGovern <amcgovern@novell.com>
939 * frameworkelement.h:
940 * frameworkelement.cpp: Certain UIElements (Controls and
941 ContentPresenters) need to apply a template before
942 MeasureOverride is invoked. Add a callback
943 (ApplyTemplateHook) to FrameworkElement which is non-null
944 for Controls and ContentPresenters to that these templates
945 can be expanded properly. r: rolf
947 * cbinding.cpp: regen. r: rolf
949 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
951 * pipeline.h: Remove dead code.
955 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
957 * pipeline.cpp|h: ProgressiveSource: close the write handle in the dtor
958 to avoid race conditions - media thread closing the handle and main
963 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
965 * mms-downloader.cpp: When sending logs, use NoPolicy. We've already
966 checked if we can access the server or not. Using StreamingPolicy is
967 wrong now that we create mms downloaders for those always. Also
972 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
975 * enums.h|cpp: Remove MediaStateError, it's not used in SL2. Whenever
976 an error occurs we go to the Closed state.
980 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
982 * mms-downloader.cpp: Accept rtsp[s] schemes too.
984 * downloader.cpp: determine mms'ness by using the policy passed in
985 instead of comparing schemes (differently in other places - the
986 pipeline considers rtsp and rtsps schemes too as streaming).
990 2009-11-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
992 * pipeline-asf.cpp: When we got a packet from the mms downloader, ask
993 the demuxer to fill its buffers. This fixes some cases where the mms
994 stream never finishes buffering. Added GetDemuxerReffed.
998 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1000 * pipeline.cpp: Don't completely stop working when the media is
1001 stopped, the media element needs the first frame of the media, so
1002 when stopped, buffer 1 frame instead of 0. Makes MS DRT #483 pass.
1004 2009-10-29 Alan McGovern <amcgovern@novell.com>
1006 * grid.cpp: Grid should not invalidate its measure unless
1007 either the Columns or Rows collection changes. This reverts
1008 what looks like an accidental commit by lewing in r123309.
1011 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1013 * mediaelement.cpp: If we Seek when Paused, we need to update
1014 paused_position. Fixes one error in MS DRT #483.
1018 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1020 * pipeline.cpp: Media::SelectDemuxerAsync: seek to 0 on the source
1021 before searching for a demuxer. Makes #546241 play all the audio it
1026 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1028 * pipeline.cpp: Include signal.h.
1032 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1034 * mediaelement.cpp: OpenCompletedHandler: only emit
1035 DownloadProgressChanged if MediaOpened hasn't been raised. This fixes
1036 MS DRT #25 (which checks that DownloadProgressChanged isn't raised
1037 after calling Stop and then Play on a media element).
1041 2009-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1043 * pipeline.cpp: When we enter a new thread, ensure that we don't
1044 inherit blocked signals from the thread that created us. Fixes deadlock
1045 reported in #546241.
1049 2009-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
1051 * mediaplayer.cpp|h: Instead of keeping a flag telling whether we're
1052 seeking or not, keep a counter, since we may end up with multiple
1053 pending seeks, and we only want to restart playback when the last seek
1054 finishes. Also call MediaElement's seek method so that we do everything
1055 we must do when a seek happens. Fixes our media test #153.
1057 * mediaelement.cpp|h: Add a force parameter to Seek to force seeking no
1058 matter which state we're in. Used by MediaPlayer to seek when we open
1061 * pipeline.cpp|h: Don't start filling the buffers when a media is opened,
1062 the first thing we do after opening a media is seeking, which would
1063 invalidate whatever buffer we create. When the first seek has finished,
1064 it will request a buffer fill. Also remove the optimization that was
1065 joining multiple seeks into one (the last one), since there was no way
1066 MediaPlayer could know which seek finished when the SeekCompleted event
1067 was raised. We now do all seeks, in the correct order.
1069 * playlist.cpp|h: Remove the same optimization here, have a list of pending
1070 seeks and execute them in order.
1074 2009-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
1076 * pipeline.cpp: Add a workaround for having invalid codecs in the
1077 expected codec location - with this workaround the user will get
1078 a new codec download dialog.
1082 2009-10-26 Sebastien Pouliot <sebastien@ximian.com>
1084 * deployment.cpp: Match SL appdomain friendly name
1088 2009-10-23 Chris Toshok <toshok@ximian.com>
1090 * runtime.cpp (Surface::IsVersionSupported): report that we
1091 support versions 3.0.x, because the alternative is not even
1092 attempting to execute many xaps.
1096 2009-10-23 Chris Toshok <toshok@ximian.com>
1098 * frameworkelement.cpp (FrameworkElement::UpdateLayout): call
1099 Deployment::GetCurrent()->LayoutUpdated() instead of walking an
1102 * frameworkelement.h (class FrameworkElement): remove
1105 * deployment.h,cpp (Deployment::LayoutUpdated): move the
1106 FrameworkElement event here, since any layout updating causes
1107 every LayoutUpdated handler to be called, even for those elements
1110 * type-generated.cpp: regen
1114 2009-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
1116 * pipeline.h: IMediaDemuxer: add a GetCanSeek method specifying whether
1117 a demuxer can seek or not. ExternalDemuxer (aka MediaStreamSource) can
1118 specify false for this (which won't prevent SL from trying to seek on
1119 the MediaStreamSource though). Implement ExternalDemuxer::SetCanSeek.
1121 * mediaelement.cpp: If the demuxer can't seek, set CanSeek = false.
1125 2009-10-23 Stephane Delcroix <sdelcroix@novell.com>
1127 * uri.cpp (flatten_path): keep track of ../ parts if there's no
1128 previous part to drop, or if the previous part is ../ too.
1132 2009-10-23 Stephane Delcroix <sdelcroix@novell.com>
1134 * deepzoomimagetilesource..h|cpp: the strip_and_set hack is no longer
1135 required with jeff's latest patch
1139 2009-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
1141 * pipeline-ui.cpp: ShowUI: We need to set the current deployment here.
1145 2009-10-22 Jeffrey Stedfast <fejj@novell.com>
1147 * uri.cpp (flatten_path): New helper function to flatten a path
1148 (e.g. get rid of extra /'s, ./'s, and handle ../'s).
1149 (Parse): If the Uri is absolute, flatten the path.
1150 (Combine): Simplified by just concatenating the old path, the
1151 relative_path, and then calling flatten_path(). Also, thanks to
1152 Stephane's investigations, fixed the fact that a relative_path
1153 starting with '/' does not combine at the root like previously
1158 2009-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
1160 * dependencyobject.cpp|h: CanEmitEvents: add an event_id argument, so
1161 that we can allow DestroyedEvent during shutdown. This fixes a crash
1162 with namescopes - they rely on DestroyedEVent to properly detach from
1167 2009-10-21 Stephane Delcroix <sdelcroix@novell.com>
1169 * uri.cpp: url_encode the whitespaces too,
1173 2009-10-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
1175 * pipeline-ui.cpp: Include stdlib.h to fix release builds.
1179 2009-10-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
1181 * pipeline.cpp: GetMediaReffed might return null, add some null checks
1186 2009-10-20 Andreia Gaita <avidigal@novell.com>
1188 * timemanager.[h|cpp]: (AddDispatcherCall) used by Dispatcher to add tick
1189 calls. If it's called while we're in the emitting loop, save the new
1190 ones on another list so they'll get invoked on the next tick. All other
1191 tick calls added via AddTickCall get invoked asap.
1193 * list.[h|cpp]: change CloneAndClear to MoveTo, it now moves the queue
1194 nodes to an existing queue instead of creating a new one
1196 * cbinding.[h|cpp]: regen
1200 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
1202 * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: Only clear the
1203 pending_stream field if we're stopped or if we processed the returned
1204 frame. Specifically do not clear the pending_stream field if we're
1205 not executing on a media thread (since when the method is called again on
1206 the media thread we might end up dropping the frame) - and it's a race
1207 condition that may cause crashes.
1211 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
1213 * runtime.cpp|h: Add a DetachWindow which detaches the surface from
1214 the window and prevents the window from getting destroyed when the
1215 surface is destroyed. Also add a few protections against having a
1216 null window, which we may get when the window has been detached.
1220 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
1224 * type.h.in: Added a LookupEvent method that takes a deployment
1225 parameter so that it doesn't try to use Deployment::GetCurrent. This
1226 is required when we need to lookup events for deployments which are
1227 not the current one (when re-creating a PluginInstance since its
1228 source has changed for instance).
1232 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
1235 * window.cpp|h: Detach the window from the deployment by not storing it,
1236 use Surface' deployment instead. Also add a convenience SetCurrentDeployment
1248 * dependencyproperty.cpp: Include deployment.h, required now that
1249 window.h doesn't include it.
1252 * Makefile.am: Updated with window.cpp.
1256 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
1258 * deployment.cpp|h: Moved all managed code handling from PluginInstance
1263 2009-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
1265 * codec-version.h.in: Bump ABI to 16.
1267 2009-10-19 Andreia Gaita <avidigal@novell.com>
1269 * list.[h|cpp]: (Queue::CloneAndClear) Added, clones the queue while
1270 clearing the original
1272 * timemanager.cpp: Make a copy of the queued tick calls and use that
1273 instead of the live queue. Callbacks may insert new calls into the
1274 queue, and those should be invoked on the next tick, not on the
1275 current one. Fixes drt #244
1279 2009-10-19 Andreia Gaita <avidigal@novell.com>
1281 * timemanager.cpp: fix START_TIMER define and add timing logs on tick calls
1285 2009-10-15 Alan McGovern <amcgovern@novell.com>
1287 * grid.cpp: Add comment explaining why the InvalidateMeasure
1290 2009-10-15 Alan McGovern <amcgovern@novell.com>
1292 * grid.cpp: Changing a Grid property (Row, RowSpan etc) on a
1293 UIElement invalidates its measure. r: lewing.
1295 2009-10-15 Stephane Delcroix <sdelcroix@novell.com>
1297 * multiscaleimage.cpp: send the RoutedException on ImageOpenFailed.
1298 Errorcode and (empty) message are matching SL behavior. Fixes drt #874.
1302 2009-10-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
1307 * type-generated.cpp: Regenerated.
1311 2009-10-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
1313 * pipeline.cpp: A printf sneaked in.
1317 2009-10-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
1335 * mms-downloader.cpp: Fix 64 bit printf format specifier on x64.
1339 2009-10-14 Andreia Gaita <avidigal@novell.com>
1341 * timeline.[h|cpp]: destroy dispatcher timer clocks immediately if
1342 they're stopped and not restarted on the same tick
1346 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1349 * pipeline-asf.cpp: Updated according to API changes.
1351 * pipeline.cpp|h: Media::Dispose: Check if we've been disposed and
1352 do nothing in that case. This way we don't hit the warning just below
1353 about not being in the media thread.
1355 MediaThreadPool::IsThreadPoolThread: Return the value we calculated,
1356 not a hardcoded 'true' value.
1358 Make the demuxer serialized: Don't seek if we're waiting for a frame (wait
1359 until the frame has been returned). Also don't request a frame if we're
1360 seeking (just do nothing, when the seek completes new frames will be
1363 Change seeking to store the last seeked-to pts in the demuxer
1364 when marshalling seeks from the main thread to the media thread. This
1365 ensures that if two seeks are enqueued quickly, we won't seek twice, only
1366 to the last (there is also another potential issue: if the first seek
1367 couldn't complete because we were waiting for a frame, we could end up
1368 seeking in the wrong order).
1370 * deployment.cpp: Delete the local variable, not the instance field
1375 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1377 * pipeline.cpp: ProgressiveSource::DataWrite: write_fd might be null
1378 if we've been disposed, don't print a warning in this case. Also don't
1379 get the media until we've passed the write_fd check - this way we don't
1380 leak refs if the check fails.
1384 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1386 * pipeline.cpp: Remove more output which can happen during normal
1387 executing (shutdown in particular for these cases).
1391 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1393 * pipeline.cpp: Media::RetryHttp: don't dispose media objects in this
1394 method directly, it's called on the main thread, instead marshal the
1395 Dispose to the media thread. Also reset error_reported, otherwise
1396 Initialize will just bail out immediately.
1400 2009-10-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
1402 * pipeline.cpp: Download progress can actually go down (if the file
1403 size goes down). So don't print a scary warning.
1407 2009-10-13 Jeffrey Stedfast <fejj@novell.com>
1409 * textbox.cpp (TextBoxView::Layout): Set dirty to false after
1410 laying out the text.
1411 (TextBoxView::Render): Don't do Layout here.
1415 2009-10-09 Chris Toshok <toshok@ximian.com>
1417 * control.cpp (Control::OnPropertyChanged): drt #438 shows that
1418 you can set Template = null to clear the template's visual tree.
1420 (Control::ClearTemplate): set template_root to NULL after we
1425 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
1427 * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
1428 which may happen quite often and in common code paths.
1432 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
1434 * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
1435 invoking the property changed handler the values we have might have
1436 gotten deleted. Clone them before calling the property changed handler
1437 so that we don't access deleted values. Makes #544211 not crash.
1441 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
1443 * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
1444 when returning early.
1448 2009-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
1450 * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
1452 * dependencyproperty.g.cpp: Regenerated.
1456 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
1458 * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
1462 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
1464 * audio.cpp: AudioSource::Dispose: lock around field accesses,
1465 and move the fields into a local variables so we can clean up
1466 with the mutex unlocked.
1470 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
1472 * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
1473 end up with a null stream, so don't spam the console with warnings.
1477 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
1479 * mediaplayer.cpp: Open: seek to the initial pts.
1481 * playlist.cpp: When we re-open a media after stopping it, don't do
1482 it async since we might end up doing things in the wrong order.
1488 2009-10-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
1490 * deployment.cpp|h: Make shutdown an async/iterative process to ensure
1491 we don't accidentally get deadlocked while shutting down. Change shutdown
1492 sequence to first ensure no media threads are running, then do managed
1493 shutdown unloading the appdomain, and do nothing more until the appdomain
1494 has unloaded successfully (calling mono_domain_finalize which we used to is
1495 very wrong since it assumes all managed threads have been aborted, when only
1496 mono_domain_unload actually aborts threads - we ended up executing code in
1497 other managed threads with freed objects everywhere). Added an
1498 AppDomainUnloadedEvent so that the plugin can know when the appdomain has
1499 been unloaded and free itself. Dispose the types when the deployment is
1500 disposed, and delete them types when the deployment is destroyed. This way we
1501 make sure that the types are available until all the objects have been
1502 deleted. This also fixes different code paths / deletion points
1503 depending on whether we built with object tracking or not. This also
1504 removes the need for the is_dead variable. Maintain a counter of the number of
1505 deployments alive so that we know when runtime can be shut down.
1507 * dependencyobject.cpp: Don't emit events while we're shutting down.
1508 Deployment::is_dead is dead now, remove checks, replaced with Deployment::
1509 IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
1512 * dependencyproperty.cpp|h: Add a Dispose method which clears out any
1513 refs the default value might have (but keep a default value, we depend
1514 in some places on having a default value).
1516 * type.cpp: Dispose: call Dispose on the DP.
1519 * type.h.in: Remove 'disposed' field: no longer needed.
1523 2009-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
1525 * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
1526 This ensures that we don't keep the (default) 5s buffer of media in
1527 memory while stopped. Add lots of checks for a stopped media so that
1528 we don't refill the buffer after clearing it.
1529 Makes MS DRT #238, #239 and #244 require a lot less memory.
1531 * playlist.cpp: Call Play on the media too when we start playing.
1533 2009-10-05 Jeffrey Stedfast <fejj@novell.com>
1535 * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
1536 silently drop repeated key-press events.
1540 2009-10-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
1542 * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
1543 issue where we'd create more MediaFrames than the delayed unref
1544 mechanism could free, so we'd run out of memory.
1548 2009-10-05 Alan McGovern <amcgovern@novell.com>
1552 * dependencyobject.h:
1553 * dependencyobject.cpp: Store the starting_generation and
1554 only_unemitted flags on the EmitContext so that the values
1555 are used when we call DoEmitCurrentContext from managed
1558 2009-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
1560 * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
1561 if we there is already a request pending.
1565 2009-10-01 Jeffrey Stedfast <fejj@novell.com>
1567 Gets drt #412 a bit closer to passing.
1569 * textblock.cpp (TextBlock): Initialize our own FontDescription
1570 needed so we can tell the layout engine what the base font to use
1571 for calculating BlockLineHeight proportions.
1572 (TextBlock): Delete our FontDescription.
1573 (UpdateFontDescription): New method to update our own
1574 FontDescription and notify the layout engine of any changes.
1575 (UpdateLayoutAttributes): Call UpdateFontDescription().
1576 (UpdateFontDescriptions): Same.
1578 * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
1579 distance to the baseline given the base font.
1580 (TextLayout::OverrideLineHeight): Don't check line_height against
1581 NAN, check it against 0 instead. NAN means that we use the
1582 containing TextBlock's font height as a base.
1583 (TextLayout::LineHeightOverride): New method to figure out the
1584 line height value to use when using BlockLineHeight strategy.
1585 (TextLayout::DescendOverride): Given the overridden LineHeight,
1586 calculate the baseline offset using the proportional distance
1587 calculated in SetBaseFont().
1588 (TextLayout::Layout): Instead of using 0 as the overridden line
1589 descent, use the value calculated from DescendOverride(). Also use
1590 LineHeightOverride() instead of line_height directly.
1594 2009-10-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
1596 * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
1597 disposed, that ensures that the queue is cleared up even if the
1598 MmsPlaylistEntry itself leaks.
1602 2009-10-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
1604 * pipeline-asf.cpp: Fix some potential leaks.
1608 2009-10-01 Jeffrey Stedfast <fejj@novell.com>
1610 * fonts.h (class TextFont): Make some of the getters const.
1614 2009-10-01 Andreia Gaita <avidigal@novell.com>
1616 * utils.cpp: if there's no Application instance, use the root temp
1617 dir to store, and track the created path directly on deployment so
1618 it can be cleared up in the end.
1622 2009-10-01 Alan McGovern <amcgovern@novell.com>
1624 * runtime.cpp: WalkTreeForLoaded has already been called on
1625 this element as part of the previous call to AttachLayer.
1627 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1629 * dependencyobject.h: Make GetUnsafeDeployment available always, media
1630 code might use it to get the deployment of the object instead of the
1633 * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
1634 deployment instance to wait until there is nothing more executing in
1635 the thread pool regarding that deployment.
1637 * deployment.cpp|h: Maintain a list of all the Media instances created
1638 and dispose them when the deployment shuts down.
1642 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1644 * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
1645 some code duplication in all our Emit methods.
1649 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1651 * audio.cpp: Dispose: make sure the audio really stops.
1655 2009-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
1657 * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
1658 thread-safe, since managed code may clear them up on the finalizer
1661 * cbinding.cpp|h: Regenerated.
1665 2009-09-30 Alan McGovern <amcgovern@novell.com>
1667 * runtime.cpp: If the surface has been zombified, don't handle
1668 the plugin focus in/out event. r: toshok
1670 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1672 * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
1675 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1677 * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
1678 decoding async. This ensures we don't reenter managed code when the
1679 frame comes from MediaStreamSource.
1683 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1685 * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
1686 for the queue, it may blow up when the process shuts down because the
1687 media thread might still be running when the list is destroyed causing
1692 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1694 * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
1695 specifying the max number of threads, and use static memory for all of
1700 2009-09-30 Andreia Gaita <avidigal@novell.com>
1702 * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
1703 paths that get created in applications, so they can be released even
1704 if the Application instance leaks.
1706 * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
1707 which keeps the base temp path of all files and resources for an
1710 * utils.cpp: use the Application GetResourceRoot as a base path for
1711 all temporary files.
1715 2009-09-30 Alan McGovern <amcgovern@novell.com>
1717 * runtime.cpp: When the plugin gets focus or loses focus, we
1718 have to emit the corresponding event on the currently
1719 focused element - not on the TopLevel. Note that if we focus
1720 out of the plugin, we emit LostFocus on the currently
1721 focused element but do *not* set the current focused element
1722 to null. Lastly when handling the mouse down event, we
1723 should not try to focus elements in the hitlist from the
1724 mouse click. This mostly fixes DRT 745. r: rolf
1726 2009-09-30 Alan McGovern <amcgovern@novell.com>
1730 * validators.cpp: IsInputMethodEnabled defaults to true and
1731 also needs a validator to ensure that it's only set on
1733 * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
1734 true and also needs a validator to ensure that it's only set
1737 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1739 * pipeline.cpp: Reset more state when a seek completes.
1743 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1745 * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
1746 call to MediaThreadPool::AddWork, since otherwise we have a race
1747 condition between setting the is_disposed variable to true and adding
1752 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1754 * mediaelement.cpp: Stop immediately when the we're deattached from the
1759 2009-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
1761 * deployment.h: Fix typo in comment.
1763 2009-09-29 Chris Toshok <toshok@ximian.com>
1765 * dependencyobject.cpp (EventObject::StartEmit): when we copy the
1766 list of closures to invoke, don't copy ones that are
1767 pending_removal. This fixes the crash due to re-entering in drt
1768 502 in a way that doesn't break the existing plugin behavior.
1769 (EventObject::DoEmitCurrentContext): revert the
1770 !closure->pending_removal change that caused plugin event listener
1771 breakage in the xaml tests.
1775 2009-09-29 Larry Ewing <lewing@novell.com>
1777 * border.cpp (InsideObject): improve Border::InsideObject to
1778 handle the actual drawn bounds.
1784 2009-09-29 Jeffrey Stedfast <fejj@novell.com>
1786 * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
1787 to be more consistent with the managed method names. Don't set
1788 Handled to true, since anything that makes it this far should also
1793 2009-09-28 Andreia Gaita <avidigal@novell.com>
1795 * application.cpp, bitmapimage.cpp,
1796 file-downloader.cpp, fontmanager.cpp,
1797 pipeline-ui.cpp, pipeline.cpp,
1798 utils.cpp: uniform usage of glib io calls
1802 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1804 * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
1805 the current deployment as it was when returning from it.
1809 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1811 * mediaelement.cpp|h: When receiving markers from the pipeline, store them
1812 in a general list and only move them into a TimelineCollection just before
1813 checking if they are to be emitted. This avoids locking a mutex during a
1814 potentially large time, as well as trying to emit an event on the pipeline
1815 thread (collection changed event when adding markers to the
1816 TimelineCollection).
1820 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1822 * audio.cpp: Follow refcounting rules with the AlsaPlayer.
1826 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1828 * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
1829 locked. CreateInstance: Add a couple of comments.
1833 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1835 * deployment.cpp|h: No need for the downloaders field to be a pointer
1836 when it'll always exist. Move the downloader abort code to the node's
1837 destructor, this way we ensure that the downloader is always aborted.
1838 Reinitialize: clear the downloaders list instead of creating a new one
1839 (and leaking the previous one).
1843 2009-09-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
1845 * audio.cpp|h: AudioPlayer can't derive from EventObject, since
1846 EventObject is tied to a particular deployment, while AudioPlayer is
1847 process-wide. Implement simple refcounting in AudioPlayer to work
1848 around this and keep the old behaviour.
1853 * type-generated.cpp: Regenerated.
1857 2009-09-28 Chris Toshok <toshok@ximian.com>
1859 * frameworkelement.h|cpp (class FrameworkElement): remove the
1860 empty SetValueWithErrorImpl implementation.
1864 2009-09-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
1866 * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
1867 MS DRT #244 (and possibly others) where we'd end up raising the
1868 MediaOpened event while still parsing xaml (the test didn't have time
1869 to attach an handler to the event before it was raised).
1873 2009-09-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
1875 * mediaelement.cpp: Stop when we're detached. This helps with a
1876 resource "leak": if the user code just removes the mediaelement from
1877 the visual tree and forgets about it, we'd continue playing until the
1878 gc kicks in and finds out it should free the mediaelement.
1882 2009-09-28 Chris Toshok <toshok@ximian.com>
1884 * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
1885 call closure functions when the closure is pending removal. if
1886 it's a managed delegate it will likely have already been
1887 collected. This fixes the regression of drt #502.
1891 2009-09-24 Stephen Shaw <sshaw@decriptor.com>
1893 * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
1894 Method now returns a value
1898 2009-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
1900 * mediaelement.cpp|h: Remove unused methods.
1904 2009-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
1906 * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
1910 2009-09-23 Chris Toshok <toshok@ximian.com>
1912 * uielement.cpp (UIElement::EmitGotFocus): this event passes
1913 RoutedEventArgs, not EventArgs.
1914 (UIElement::EmitLostFocus): same.
1916 * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
1917 make both MouseButtonEventArgs and MouseWheelEventArgs subclass
1918 from MouseEventArgs. Move MouseEventArgs::GetButton and
1919 ::GetClickCount to MouseButtonEventArgs.
1921 * runtime.cpp (Surface::CreateArgsForEvent): for the button
1922 events, create a MouseButtonEventArgs.
1924 * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
1925 button handling methods.
1927 * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
1931 2009-09-23 Chris Toshok <toshok@ximian.com>
1933 * uielement.h (class UIElement): add event metadata.
1935 * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
1937 (UIElement::ClearLoaded): same with Unloaded.
1939 * type-generated.cpp, type.h, value.h: regen.
1941 * transform.h (class Matrix): add event metadata.
1943 * timeline.h (class TimelineGroup): add event metadata.
1945 * textbox.h (class TextBox): add event metadata.
1946 (class PasswordBox): add event metadata.
1948 * stylus.h (class StylusPoint): add event metadata.
1950 * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
1951 captured/pendingReleaseCapture before emitting the event,
1952 otherwise we could get into an infinite loop between handler and
1953 ReleaseMouseCapture.
1954 (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
1956 * namescope.h (class NameScope): add event metadata.
1958 * multiscaleimage.h (class MultiScaleImage): add event metadata.
1960 * mediaelement.h (class MediaElement): add event metadata.
1962 * media.h (class MediaBase): add event metadata.
1964 * frameworkelement.h (class FrameworkElement): add event metadata.
1966 * deployment.h (class Deployment): add event metadata.
1968 * dependencyproperty.h: remove PropertyChangedEventArgs from here.
1970 * eventargs.h: and put it here.
1972 * dependencyproperty.h|cpp: replace the emitting count with a
1973 stack of EmitContexts. This is since the managed layer calls a
1974 function to actually perform the emit, and the managed code
1975 doesn't have access to the context.
1976 (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
1977 can replace the normal emit machinery with a delegate into managed
1978 that calls the OnEvent method.
1979 (StartEmit): push the new context onto the stack
1980 (DoEmit): if there's an on_event handler, call that and let it do
1981 the work. otherwise call DoEmitCurrentContext.
1982 (DoEmitCurrentContext): move the actual invoking of event closures
1984 (FinishEmit): pop the context off the stack.
1985 (DependencyObject::ProviderValueChanged): we have to allocate
1986 PropertyChangedEventArgs on the heap now that it's refcounted.
1987 (DependencyObject::NotifyListenersOfPropertyChange): same.
1988 (DependencyObject::collection_item_changed): same.
1990 * control.h (class Control): add event metadata.
1992 * control.cpp (Control::OnPropertyChanged): when emitting
1993 IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
1995 * collection.h (class Collection): add event metadata.
1997 * brush.h (class ImageBrush): add event metadata.
1999 * bitmapsource.h (class BitmapSource): add event metadata.
2001 * bitmapimage.h (class BitmapImage): add event metadata.
2003 * application.h (class Application): add event metadata.
2005 * cbinding.h|cpp: regen.
2007 r: spouliot, andriea
2009 2009-09-23 Stephane Delcroix <sdelcroix@novell.com>
2011 * multiscaleimage.cpp: fix the vp_h computation. vp_h is
2012 vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
2014 2009-09-21 Stephane Delcroix <sdelcroix@novell.com>
2016 * multiscaleimage.h|cpp: stop the animations when setting
2017 UseSprings to false. Set the values to the target values
2018 of the animations too.
2022 2009-09-18 Jackson Harper <jackson@ximian.com>
2024 * xaml.cpp|h: Use flags passed to createfromstring now for
2025 validating templates and importing the default namespace.
2027 * collection.cpp|h: Implement a resource dictionary collection,
2028 this is a collection of dictionaries used for the
2029 MergedDictionaries property of ResourceDictionaries
2030 * resources.cpp|h: Implement the merged dictionaries property and
2031 check them when looking up items in a dictionary.
2032 * dependencyproperty.g.cpp:
2033 * types-generated.cpp:
2034 * cbinding.c|h: regen
2036 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
2038 * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
2039 media before asserting that it isn't null.
2043 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
2045 * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
2046 buffering_time of 1 ms, otherwise we'll do nothing at all since we have
2047 the requested amount of buffer (nothing at all), but buffering progress
2048 is is still at 0% (since we didn't buffer anything). Don't change the
2049 buffering progress calculation, since playback would fail (there would
2050 be nothing to play).
2054 2009-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
2056 * mms-downloader.cpp: Remove old debugging code that was stripping out
2057 everything after a ? in a url.
2061 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
2063 * xaml.cpp: Honor the debug configuration option instead of enabling it
2066 * glyphs.cpp: Move debug code into conditional expression.
2068 * debug.h: DEBUG is resolved to nothing at all in release builds, so
2069 when checking if debug is defined in complex expressions we need to
2070 use 'defined (DEBUG)', since otherwise the expression becomes bogus.
2071 Also Move #include "runtime.h" outside of the conditional code, this
2072 way we don't have different include requirements in other headers
2073 depending on debug/release configuration.
2077 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
2079 * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
2080 specifying whether the current thread should be registered with the
2083 This fixes a minor catch with the media threads: they need to register
2084 the current thread with the deployment before calling
2085 SetCurrentDeployment, but they can't call GetDeployment to get the
2086 deployment to register the thread with before calling
2087 SetCurrentDeployment since it would trigger a deployment mis-matched
2090 * pipeline.cpp|h: Add a thread pool to manage media threads instead of
2091 creating one thread per Media instance.
2093 * pipeline-asf.cpp: Updated according to Media API changes.
2097 2009-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
2099 * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
2104 2009-09-16 Larry Ewing <lewing@novell.com>
2106 * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
2107 not DependencyObject so that property changes actually work.
2111 2009-09-14 Jeffrey Stedfast <fejj@novell.com>
2113 * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
2115 * application.cpp (GetResourceAsPath): ExtractAll using
2116 CanonModeResource (everything gets lowercased).
2118 * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
2119 .dll's get lowercased).
2120 (xap_create_from_file): Canonicalize the AppManifest.xaml file
2123 * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
2124 argument to specify whether it is canonicalizing a Xap file, a
2125 resource name, or just fixing path separators. When in Xap mode,
2126 don't downcase Dll base names.
2127 (ExtractAll): When extracting a Xap, symlink a fully lowercased
2128 filename to the unmodified .dll name.
2132 2009-09-16 Larry Ewing <lewing@novell.com>
2134 * tilesource.h: make tileblendtime unamanaged so we can use it
2135 when creating the fade animation.
2137 * multiscaleimage.cpp (Render): use the duration from the
2138 tilesource for the fade animation. This probably needs to listen
2139 to change events but more testing is required.
2143 2009-09-16 Larry Ewing <lewing@novell.com>
2145 * style.h: make IsSealed field internal.
2147 2009-09-16 Sebastien Pouliot <sebastien@ximian.com>
2149 * messagebox.h: Remove tab to please the generator
2153 2009-09-16 Sebastien Pouliot <sebastien@ximian.com>
2155 * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
2160 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
2162 * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the
2163 resource loader from the main thread.
2167 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
2170 * bitmapimage.cpp: don't leak get_res_aborter.
2174 2009-09-16 Stephane Delcroix <sdelcroix@novell.com>
2176 * multiscaleimage.h|cpp: StopDownloading () abort and clean the
2177 downloaders. Call it from the dtor, InvalidateTileLayer and
2178 OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
2182 2009-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
2184 * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
2185 and add a 'description' field to ease understanding of what is going
2190 2009-09-15 Sebastien Pouliot <sebastien@ximian.com>
2192 * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
2196 2009-09-15 Larry Ewing <lewing@novell.com>
2198 * control.h: Mark IsTemplateItem as internal.
2200 * mediaelement.h: mark DownloadProgress as readonly.
2202 * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
2205 2009-09-15 Sebastien Pouliot <sebastien@ximian.com>
2207 * messagebox.cpp|h: New. MessageBox implementation
2208 * Makefile.am: Add new files to the build
2212 2009-09-15 Stephane Delcroix <sdelcroix@novell.com>
2214 * multiscaleimage.cpp: set the surface pointer to NULL after
2219 2009-09-16 Chris Toshok <toshok@ximian.com>
2221 * dependencyobject.cpp (EventObject::Emit): don't return early
2222 when we have a pre-emit handler, even if the list is empty. Also,
2223 don't do the pre-emit handler here.
2224 (EventObject::DoEmit): instead do it here.
2226 2009-09-14 Chris Toshok <toshok@ximian.com>
2228 * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
2229 ParserErrorEventArgs overload to MoonError::FillIn to simplify
2231 (XamlLoader::CreateFromStringWithError): same.
2232 (XamlLoader::HydrateFromStringWithError): same.
2234 * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
2235 MoonError to the ErrorEventArgs, instead of the multiple args.
2237 * playlist.cpp: same.
2239 * asf/asf.cpp: same.
2241 * downloader.cpp (Downloader::SendInternal): pass a MoonError to
2242 the ErrorEventArgs, instead of the multiple args.
2243 (Downloader::NotifyFailed): same.
2245 * runtime.cpp (Surface::EmitError): same.
2247 * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
2249 * pipeline.cpp: same.
2251 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
2252 we need to free the string we pass to MoonError::FillIn now that
2254 (DependencyObject::IsValueValid): same.
2255 (DependencyObject::RegisterAllNamesRootedAt): same.
2256 (DependencyObject::ReadLocalValueWithError): same.
2257 (DependencyObject::GetValueWithError): same.
2258 (DependencyObject::GetValueNoDefaultWithError): same.
2259 (DependencyObject::SetParent): same.
2261 * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
2263 (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
2264 ImageFailedEvent, after reffing them.
2266 * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
2267 an error, we need to fill in the moon error with the appropriate
2268 exception, code, and msg. the calldata to the Emit call is now an
2269 ImageErrorEventArgs again, which we construct using the
2271 (BitmapImage::DownloaderFailed): same sort of change.
2272 (BitmapImage::CreateLoader): same.
2274 * bitmapimage.h (class BitmapImage): rename "error" field to
2275 "gerror" to make it clearer what it is in the code.
2277 * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
2278 we get a little more indication of where it comes from. this enum
2279 is not long for this world, if I can help it.
2281 * media.h|cpp (Image::image_failed): pass in the calldata to
2283 (Image::ImageFailed): pass the ImageErrorEventArgs on to our
2284 ImageFailedEvent, after reffing them.
2286 * error.h|cpp: move all the eventargs subclasses from here
2288 (class MoonError): add a non-empty ctor, copy ctor and operator=.
2289 Also, remove the char* vs. const char* apis. make them all const
2290 char*, and dup the passed in string. Lastly, add a FillIn
2291 overload that takes a ParserErrorEventArgs.
2293 * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
2294 info in an embedded MoonError.
2295 (ExceptionRoutedEventArgs): remove this class. Nothing in
2296 unmanaged code uses it.
2298 2009-09-14 Sebastien Pouliot <sebastien@ximian.com>
2300 * xaml.cpp: remove dead code
2304 2009-09-14 Chris Toshok <toshok@ximian.com>
2306 * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
2307 ParserErrorEventArgs overload to MoonError::FillIn to simplify
2309 (XamlLoader::CreateFromStringWithError): same.
2310 (XamlLoader::HydrateFromStringWithError): same.
2312 * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
2313 MoonError to the ErrorEventArgs, instead of the multiple args.
2315 * playlist.cpp: same.
2317 * asf/asf.cpp: same.
2319 * downloader.cpp (Downloader::SendInternal): pass a MoonError to
2320 the ErrorEventArgs, instead of the multiple args.
2321 (Downloader::NotifyFailed): same.
2323 * runtime.cpp (Surface::EmitError): same.
2325 * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
2327 * pipeline.cpp: same.
2329 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
2330 we need to free the string we pass to MoonError::FillIn now that
2332 (DependencyObject::IsValueValid): same.
2333 (DependencyObject::RegisterAllNamesRootedAt): same.
2334 (DependencyObject::ReadLocalValueWithError): same.
2335 (DependencyObject::GetValueWithError): same.
2336 (DependencyObject::GetValueNoDefaultWithError): same.
2337 (DependencyObject::SetParent): same.
2339 * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
2341 (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
2342 ImageFailedEvent, after reffing them.
2344 * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
2345 an error, we need to fill in the moon error with the appropriate
2346 exception, code, and msg. the calldata to the Emit call is now an
2347 ImageErrorEventArgs again, which we construct using the
2349 (BitmapImage::DownloaderFailed): same sort of change.
2350 (BitmapImage::CreateLoader): same.
2352 * bitmapimage.h (class BitmapImage): rename "error" field to
2353 "gerror" to make it clearer what it is in the code.
2355 * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
2356 we get a little more indication of where it comes from. this enum
2357 is not long for this world, if I can help it.
2359 * media.h|cpp (Image::image_failed): pass in the calldata to
2361 (Image::ImageFailed): pass the ImageErrorEventArgs on to our
2362 ImageFailedEvent, after reffing them.
2364 * error.h|cpp: move all the eventargs subclasses from here
2366 (class MoonError): add a non-empty ctor, copy ctor and operator=.
2367 Also, remove the char* vs. const char* apis. make them all const
2368 char*, and dup the passed in string. Lastly, add a FillIn
2369 overload that takes a ParserErrorEventArgs.
2371 * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
2372 info in an embedded MoonError.
2373 (ExceptionRoutedEventArgs): remove this class. Nothing in
2374 unmanaged code uses it.
2376 2009-09-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2379 * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
2380 need to play something, and clean up when we stop playing audio.
2382 * mutex.h: Add support for recursive mutexes.
2386 2009-09-14 Stephane Delcroix <sdelcroix@novell.com>
2388 * deepzoomimagetilesource.h:
2389 * multiscaleimage.h|cpp:
2391 * uielement.h: drop some manually written cbindings in favor of
2394 * cbinding.h|cpp: regen
2398 2009-09-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
2400 * audio.cpp: It should be safe to delete audio sources on any
2405 2009-09-11 Larry Ewing <lewing@novell.com>
2407 * deployment.cpp, deployment.h: add OutOfBrowserSettings,
2408 ExternalPartCollection, ExternalPart and ExtensionPart to allow
2413 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2415 * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
2416 wherever we used to access the field directly. Fixes a very rare
2421 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2423 * pipeline-asf.cpp: Add a null check.
2427 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2429 * runtime.h: Fix typo in sanity message.
2431 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2433 * audio.cpp: WriteFull: have a local copy of the stream pointer,
2434 it may get changed on the main thread.
2438 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2440 * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
2441 the audio stream in all code paths.
2445 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2447 * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
2448 it should be safe since the tick call is removed upon destruction.
2452 2009-09-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
2454 * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
2455 AudioPlayer is disposed due to refcounting reaching 0. This way
2456 we can keep the instance lock for as little time as possible
2457 (to do the ref), instead of during the entire Add/Remove calls,
2458 which may end up deadlocking deep inside pulse in rare circumstances
2459 (we try to add an audio source on one thread(requires a global pa lock)
2460 when removing another audio source on another thread as a response to
2461 an event from pa which may already have the global pa lock).
2466 * type-generated.cpp: Regenerated
2470 2009-09-11 Stephane Delcroix <sdelcroix@novell.com>
2472 * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
2473 pointer instead of subcache, layer, x and y. Avoids some tree waliking
2478 2009-09-11 Stephane Delcroix <sdelcroix@novell.com>
2480 * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix
2481 qtree_remove to take guint64 indices, qtree_next_sibling for
2486 2009-09-10 Jackson Harper <jackson@ximian.com>
2488 * namescope.h: Add an accessor for the names hashtable so we can
2489 use them in plugin-debug.
2493 2009-09-10 Jackson Harper <jackson@ximian.com>
2495 * xaml.cpp|h: Add flags to the callback data
2496 - Add a pinvoke function that allows propertys to be delayed in
2497 their set call until after the element is fully parsed. This
2498 allows things like adding elements to a Selector and setting its
2503 2009-09-10 Larry Ewing <lewing@novell.com>
2505 * multiscaleimage.cpp (RenderSingle): work around the cairo
2506 limitations by doing the viewport/msi intersection and clipping in
2511 2009-09-10 Stephane Delcroix <sdelcroix@novell.com>
2513 * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
2514 receive on Render is already clipped to the control size.
2515 Wrap the clipping to image size in a conditional to avoid clipping
2516 with really huge rectangles. That it a bug in cairo, as shown in
2517 drt 2013, 2014. In those cases, the rendering will (visually) leak
2518 for the low order layers.
2522 2009-09-09 Jackson Harper <jackson@ximian.com>
2524 * xaml.cpp: When we are setting attributes we want to set
2525 everything with a backing dependency property before we set things
2526 that require managed. We also delay the setting of attributes with
2527 an explicit managed namespace reference. NOTE: We dont delay
2528 setting attributes that have a DP but are forced into managed
2529 because of their type.
2530 - We can share SetUnknownAttribute functions because the default
2531 xmlns is inited to NULL.
2535 2009-09-09 Stephane Delcroix <sdelcroix@novell.com>
2537 * multiscaleimage.cpp: Clear () the SubImagesCollection on
2538 source changed. Speed things up when reusing the same MSI
2539 over and over with different sources. drt #2004 is now passing
2544 2009-09-08 Sebastien Pouliot <sebastien@ximian.com>
2546 * downloader.h, layout.h, list.h: Add missing virtual destructors
2550 2009-09-08 Chris Toshok <toshok@ximian.com>
2552 * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
2553 for ProviderValueChanged's @set_parent.
2554 (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
2555 true in the visual walking case, and false in the
2556 textblock->inline case.
2557 (PROP_ADD): pass true.
2558 (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
2559 (InheritedPropertyValueProvider::PropagateInheritedProperty):
2560 do a deep traversal of the tree, looking for children who have a
2561 mapped property from the changed one (MapPropertyToDescendant
2562 returns NULL if there's no mapping). Once we find a suitable
2563 descendant, call ProviderValueChanged on it with "true" for
2564 notify_listeners. This will take care of notifying further down
2565 the tree if need be, and we can skip that branch. For textblocks
2566 we also have to iterate over the inlines to propagate the property
2567 change notification.
2568 (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
2569 traverse the entire subtree looking for classes which can inherit
2570 properties from above them. when we find one, get the inherited
2571 value. if it's non-null, notify that the property has changed,
2572 and keep trace of this property (we only notify once for a given
2573 subtree, since the normal ProviderValueChanged notifications will
2574 handle the rest for that property.)
2575 (walk_tree): this recursive function does the bulk of the work for
2576 ::PropagateInheritedPropertiesOnAddingToTree
2578 * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
2579 add an additional argument (set_parent), which is true for every
2580 instant except when TextBox is propagating inherited brushes to
2581 its constituent inlines. In this case, the textbox is still the
2582 parent of the brush. At least for the time being. In a perfect
2583 world all the changed handling would live in the leaf
2584 nodes (i.e. in the Inlines themselves)
2585 (DependencyObject::ClearValue): track api change
2586 (DependencyObject::SetValueWithErrorImpl): same.
2587 (DependencyObject::GetValue): add an overload for allowing both
2588 starting and ending precedences, and implement the other two
2589 overloads in terms of it.
2590 (DependencyObject::GetValueSkippingPrecedence): remove, no longer
2593 * uielement.cpp (UIElement::ElementAdded): propagate all
2594 inheritable properties into the subtree we're adding, before
2599 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
2601 * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
2602 redirections (drt 874)
2604 * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
2607 * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
2611 2009-09-08 Sebastien Pouliot <sebastien@ximian.com>
2613 * downloader.cpp: Skip redirection check if the source url is a
2618 2009-09-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
2620 * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
2621 event from the downloader after cancelling a resource request, this
2622 is no longer true, so emit ImageFailed manually after calling Abort.
2626 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
2628 * deepzoomimagetilesource.cpp: don't render if any MSI extends
2629 is 0. avoid rendering an extra layer in some cases.
2633 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
2635 * deepzoomimagetilesource.h|cpp: replace downloader usage by
2636 Application::GetResource (). Parses the xml stream as it comes,
2637 instead of all at once.
2641 2009-09-07 Chris Toshok <toshok@ximian.com>
2643 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
2644 don't bail out early if both values are null, as the property
2645 might be AlwaysChange.
2646 (DependencyObject::ClearValue): same.
2650 2009-09-07 Stephane Delcroix <sdelcroix@novell.com>
2652 * multiscaleimage.cpp: the tileLayer parameter is not the number
2653 of layers to invalidate.
2657 2009-09-07 Stephane Delcroix <sdelcroix@novell.com>
2659 * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
2660 full cache, but only the requested tiles.
2664 2009-09-05 Stephane Delcroix <sdelcroix@novell.com>
2666 * multiscaleimage.cpp:
2667 * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
2668 the cache, aborting the downloaders, invalidating, etc...) on dzits
2669 urisource changed that is done on msi sourcechanged.
2673 2009-09-05 Stephane Delcroix <sdelcroix@novell.com>
2675 * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
2676 the OnSourcePropertyChanged handling outside of OnPropertyChanged.
2677 No longer keep a source instance variable, as we can get it with
2682 2009-09-04 Larry Ewing <lewing@novell.com>
2684 * multiscaleimage.cpp (RenderSingle): clip our rendering to the
2685 image bounds so that when we are scaling up we don't end up with
2690 2009-09-04 Stephane Delcroix <sdelcroix@novell.com>
2692 * utils.h|cpp: add a void* arg to the Cancellable api
2694 * application.cpp: remove the downloader notifications on
2697 2009-09-04 Stephane Delcroix <sdelcroix@novell.com>
2699 * multiscaleimage.cpp: on source change, don't only Abort() the
2700 dlders, but also reset the internal state of the dlders to Free
2704 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2706 * multiscaleimage.cpp: reset the Viewport to its default values
2707 on source change. Eventually fixes drt#511.
2711 2009-09-03 Jeffrey Stedfast <fejj@novell.com>
2713 * textbox.h: Nuke the CallInitialize metadata from TextBox.
2715 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2717 * deepzoomimagetilesource.h: add Generate* attributes
2719 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2721 * multiscaleimage.h: drop the GenrateJSBinding attributes
2723 2009-09-03 Stephane Delcroix <sdelcroix@novell.com>
2726 * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
2727 move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
2728 that we have to strip an eventual leading / on ctor but not on
2731 2009-09-02 Andreia Gaita <avidigal@novell.com>
2733 * dependencyobject.cpp: move the storage cleanup to Dispose, they
2734 will need to invoke handlers and other things that require the
2735 object to still be alive. fixes crash on drt 109
2739 2009-09-02 Jackson Harper <jackson@ximian.com>
2741 * dependencyproperty.cpp: If the explicitly mentioned type does
2742 not contain the property, try looking for the property on the
2743 current lookup obejct. Allows things like (UIElement.Height) on a
2748 2009-09-02 Jeffrey Stedfast <fejj@novell.com>
2750 * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
2751 UpdateLayoutAttributes(). We can't rely on it being called as a
2752 result of setting the Text property since the overall Text
2753 property value might not have changed.
2754 (TextBlock::OnCollectionItemChanged): Same here.
2755 (TextBlock::OnPropertyChanged): Same for when the Inlines property
2756 changes. In the FontSource case, don't set invalidate to
2757 false. Also set dirty to true.
2758 (SetTextInternal): Changed to return void, no need to return bool
2763 2009-09-01 Jeffrey Stedfast <fejj@novell.com>
2765 * layout.cpp (TextLayoutGlyphCluster::Render): If the background
2766 brush is null, don't bother drawing a background.
2770 2009-09-01 Jeffrey Stedfast <fejj@novell.com>
2772 * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
2773 brush is null, don't render the text.
2777 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
2779 * utils.cpp (CopyFileTo): Close the destination file handle if
2780 the source (filename) cannot be opened.
2784 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
2786 * uielement.cpp (UIElement::Paint): Don't leak a copy of the
2787 region when *not* using FTB rendering.
2791 2009-09-01 Larry Ewing <lewing@novell.com>
2793 * frameworkelement.cpp: clear LastRenderSize before we emit so
2794 that we don't end up in a possible recursion.
2796 Fixes http://www.worldwidetelescope.org/webclient/
2800 2009-09-01 Sebastien Pouliot <sebastien@ximian.com>
2802 * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
2803 error code when an invalid xap file is encoutered.
2807 2009-08-31 Sebastien Pouliot <sebastien@ximian.com>
2809 * debug.cpp: Delete frame if we're not using it in the loop
2810 * resources.cpp: Don't leak Value instance on error
2814 2009-08-30 Andreia Gaita <avidigal@novell.com>
2818 * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
2819 move it to the Timeline class so all timelines can clear their clocks.
2820 Removed private root_clock, all timelines should use the timeline
2823 * timeline.[h|cpp]: TeardownClock removes the clock from the parent
2824 ClockGroup and clears the ref on the clock so it can be destroyed
2825 (which in turn will release the ref on the timeline so it too gets
2827 DispatcherTimer doesn't have to destroy it's clock, the timeline
2828 dispose takes care of that. Added TeardownClock for DispatcherTimer
2829 so it stops the clock before disposing.
2830 Removed private root_clock, all timelines should use the timeline
2833 * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
2834 group Dispose goes down the hierarchy of clocks and starts clearing
2835 clocks (via timeline TeardownClock) from bottom to top, so
2836 everything is guaranteed to die before the root clock gets
2839 * timemanager.cpp: Dispose root clock before releasing it
2843 2009-08-30 Andreia Gaita <avidigal@novell.com>
2845 * textblock.cpp: drop the run reference, it's already reffed on the
2850 2009-08-28 Alan McGovern <amcgovern@novell.com>
2854 * contentcontrol.cpp: ContentControl is not in charge of
2855 expanding its content template, the users of ContentControl
2856 have to do that. When applying a ControlTemplate, if it
2857 expands to an empty element or one which is not a UIElement,
2858 we ignore the template and instead apply the default
2861 2009-08-27 Jeffrey Stedfast <fejj@novell.com>
2863 * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
2864 Mouse events anymore (except the special internal MultiClick
2865 event). Managed code will now call our public On$Event() methods
2867 (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
2868 true. Doesn't seem like SL ever does.
2872 2009-08-27 Stephane Delcroix <sdelcroix@novell.com>
2874 * tilesource.h: rely on the generator for internal properties.
2877 * deepzoomimagetilesource.cpp: use the accesors instead of the
2880 2009-08-27 Andreia Gaita <avidigal@novell.com>
2882 * dependencyobject.cpp: list should only be cleared, not destroyed,
2883 storage_hash still needs it
2887 2009-08-26 Chris Toshok <toshok@ximian.com>
2889 * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
2894 2009-08-16 Chris Toshok <toshok@ximian.com>
2896 * value.h.in, value.cpp: remove Value::Set. it's unnecessary.
2898 * validators.cpp (Validators::BalanceValidator): use the
2899 assignment operator instead of ::Set, which no longer exists.
2900 (Validators::VolumeValidator): same.
2901 (Validators::CursorValidator): don't assign the pointer, assign
2902 the value. This should have caused bugs...
2906 2009-08-26 Jeffrey Stedfast <fejj@novell.com>
2908 * validators.cpp (FloatValidator): New validator to make sure a
2909 value is within range for a float.
2911 * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
2912 origin_y state variables. We can just query these on demand.
2913 (Render): Simplified slightly.
2914 (GetTransformOrigin): Get rid of unused variable.
2915 (GetOriginPoint): Just use the ascender rather than the height and
2916 the descender. Simpler that way.
2918 * glyphs.h: Changed default OriginX and OriginY values to what
2919 they should be according to the moon-unit tests (also makes drt
2924 2009-08-26 Alan McGovern <amcgovern@novell.com>
2929 * template.cpp: Allow FrameworkTemplates to be expanded in
2930 managed code. Using that, expand the ItemsPanelTemplate in
2931 ItemsControl when it is available. r: toshok
2933 2009-08-26 Andrés G. Aragoneses <aaragoneses@novell.com>
2935 * security.c: Fixed typos in last "a11y" commit.
2937 2009-08-26 Chris Toshok <toshok@ximian.com>
2939 * textbox.cpp (TextBoxBase::SetSurface): only call
2940 gtk_im_context_set_client_window if @surface is non-null. this
2941 quiets down some of the gtk warnings on shutdown.
2945 2009-08-26 Alan McGovern <amcgovern@novell.com>
2950 * type-generated.cpp: regen r: shana
2952 2009-08-26 Andreia Gaita <avidigal@novell.com>
2954 * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
2955 public methods that DOs and Clocks use to control an animation:
2956 - when a new storage is attached and there is already one on
2957 the property, Disable removes the handlers from the previous
2959 - when a storage is detached, the previous one is enabled via
2960 Enable, which attaches the handlers;
2961 - when a clock is stopped, it calls Stop, which detaches
2962 everything and resets the property;
2963 - when cloning, SwitchTarget is used to replace the DO and its
2964 handlers on the storage, to avoid having to clone all the
2965 storages every time.
2967 Storages are now only deleted when the clock stops, is destroyed
2968 or when the DO they're attached to is destroyed. IsLonely was
2969 removed (meaningless now), as well as the resettable flag (only
2970 enabled animations reset)
2972 * dependencyobject.[h|cpp]: a DO can have more than one animation
2973 running on the same DP, and they need to be stored so that when a
2974 DO is cloned, all running animations are updated to the new DO -
2975 - this way, when they stop they update the current DO and not the
2976 one they were originally attached to. This fixes the animation
2977 problems on togglebuttons and other objects that have several
2978 animations overlapping each other. The storage_hash now stores a
2979 List* of AnimationStorage::Node objects with all existing animations
2980 for every DP, and the animation storage cloning process doesn't clone
2981 the storages, it merely creates a new List* with the existing storages
2982 and updates them to the newly cloned DO.
2986 2009-08-26 Alan McGovern <amcgovern@novell.com>
2988 * template.cpp: NNull check 'result' before using it. r:shana
2990 2009-08-26 Andrés G. Aragoneses <aaragoneses@novell.com>
2992 * security.c: Mark MoonAtkBridge.dll as platform assembly.
2994 2009-08-25 Chris Toshok <toshok@ximian.com>
2996 * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
2997 when IsEnabledProperty has changed. we need to do it after the
2998 focus handling has happened, though, as
2999 FocusManager.GetFocusedElement() returns the currently focused
3000 thing in handlers for IsEnabledChanged. Fixes the rendering of
3001 disabled elements in drt #432.
3005 2009-08-26 Jackson Harper <jackson@ximian.com>
3007 * dependencyproperty.cpp: Allow setting properties that are
3008 attached on their owner type without parens. r: toshok
3010 2009-08-26 Jackson Harper <jackson@ximian.com>
3012 * xaml.cpp|h: Expose a function for parsing bools so the plugin
3013 code can use our bool parsing code. (Handle ints).
3015 r: shana && kangaroo
3017 2009-08-25 Jeffrey Stedfast <fejj@novell.com>
3019 * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
3020 invalidate unless one of the fonts has actually changed.
3024 2009-08-25 Jackson Harper <jackson@ximian.com>
3026 * type.cpp: Function was still in the header but somehow lost its
3027 implementation. We dont use it anywhere but its useful for
3028 debugging. r: kangaroo
3030 2009-08-25 Alan McGovern <amcgovern@novell.com>
3036 * contentcontrol.cpp: Add support for using
3037 ContentControl.ContentTemplate when it is available. If
3038 there is no Control.Template, ContentControl.ControlTemplate
3039 is used. If that isn't available, we call into managed code
3040 and get the fallback root. r: toshok
3042 2009-08-24 Jackson Harper <jackson@ximian.com>
3044 * dependencyobject.cpp: Hydrated objects are registered in their
3045 parent namescope so we need to unregister them there also. r: toshok
3047 2009-08-21 Jeffrey Stedfast <fejj@novell.com>
3049 * fontmanager.cpp (AddResource): Need to free the path string
3050 before returning on success.
3052 * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
3053 leak the various lists.
3057 2009-08-21 Jeffrey Stedfast <fejj@novell.com>
3059 * grid.cpp (DestroyMatrices): Need to use delete[] to free the
3064 2009-08-21 Alan McGovern <amcgovern@novell.com>
3067 * template.cpp: Whenever any template is expanded, the
3068 template namescope should be locked. r: jackson
3070 2009-08-21 Alan McGovern <amcgovern@novell.com>
3072 * grid.cpp: When assigning sizes to grid segments, if the
3073 current UIElement spans across star segments, then extra
3074 height will only be assigned to those star segments.
3075 Otherwise extra height will be assigned to Auto and Pixel
3078 2009-08-20 Jeffrey Stedfast <fejj@novell.com>
3080 * textbox.cpp (TextBoxBase::Emit*Async): Removed.
3081 (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
3082 (TextBox::EmitTextChanged): Same.
3083 (PasswordBox::EmitTextChanged): Same.
3085 * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
3087 * dependencyobject.cpp (EventObject::EmitAsync): New method to
3088 emit an event asynchronously.
3092 2009-08-20 Jeffrey Stedfast <fejj@novell.com>
3094 * textbox.cpp (emit_selection_changed): Pass along the generation
3095 to the virtual EmitSelectionChanged() method.
3096 (emit_text_changed): Same.
3097 (EmitSelectionChangedAsync): Use a custom closure so that we can
3098 capture the current event generation to use when we actuall emit
3100 (EmitTextChangedAsync): Same.
3104 2009-08-20 Jackson Harper <jackson@ximian.com>
3106 * xaml.cpp: Setting OBJECT properties allows objects to be parsed
3107 from strings that shouldn't normally be. Such as SolidColorBrush
3108 and PointCollection.
3110 2009-08-19 Jeffrey Stedfast <fejj@novell.com>
3112 * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
3113 same algorithm used by Silverlight.
3117 2009-08-19 Jackson Harper <jackson@ximian.com>
3119 * playlist.cpp: Its possible to queue an async operation and then
3120 call Dispose before that operation has taken place. This patch
3121 makes Playlist delay its unref and adds guards in its async
3122 callback functions to avoid this. Fixes http://www.nederland24.nl/
3125 2009-08-18 Jackson Harper <jackson@ximian.com>
3127 * template.cpp: Remove not very helpful and somewhat scary looking
3128 debug spew. r:toshok
3130 2009-08-18 Jeffrey Stedfast <fejj@novell.com>
3132 * layout.cpp (word_type_changed): Partial revert for previous
3133 commit as it broke drt #208.
3137 2009-08-17 Jeffrey Stedfast <fejj@novell.com>
3141 * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
3143 (word_type_changed): Allow alphabetic characters inside
3145 (layout_word_wrap): Allow line advance to equal max width.
3149 2009-08-18 Alan McGovern <amcgovern@novell.com>
3152 * grid.cpp: Remove the 'magic' size as size allocations are
3153 read from row_matrix/col_matrix now. r: kangaroo
3155 2009-08-18 Alan McGovern <amcgovern@novell.com>
3158 * grid.cpp: Allocate sizes of the grid segments in the correct
3161 2009-08-17 Alan McGovern <amcgovern@novell.com>
3164 * grid.cpp: When allocating sizes for rows/columns, clamp the
3165 sizes between the Min and Max values in a consistent manner.
3168 2009-08-17 Alan McGovern <amcgovern@novell.com>
3171 * grid.cpp: Change the parameter order in the Segment
3172 constructors to be "value, min, max" to be consistent with
3173 how 'CLAMP' is usually defined. r: jackson
3175 2009-08-16 Chris Toshok <toshok@ximian.com>
3177 * xaml.cpp (value_from_str_with_parser): fix the abundant memory
3178 leaks in this method.
3180 * propertypath.h (struct PropertyPath): add a copy constructor
3181 here so the xaml.cpp changes work without crashing.
3185 2009-08-16 Chris Toshok <toshok@ximian.com>
3187 * xaml.cpp (value_from_str_with_parser): we were using the return
3188 value from this method to be "v has been set to a value", but this
3189 isn't enough state. We also need to know if the
3190 caller (dependency_object_set_attributes, specifically) should
3191 continue on or skip the attribute after it's called us. So, we
3192 add a "bool *v_set" parameter, and change the return value to
3193 "false = skip, true = continue processing." We return false in
3194 only 1 case right now, if a double-typed value is to be parsed
3195 from an empty string. This fixes the Klotski demo, which has
3196 <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
3197 usage to also deal properly with leading spaces, and stop
3198 duplicating "g_free (s); return true;" - just break there, and let
3199 the blanket free/return at the end of the method handle it.
3200 (dependency_object_set_attributes): simplify the {} handling, and
3201 stop leaking the string value of the attribute when we pass it to
3206 2009-08-15 Larry Ewing <lewing@novell.com>
3208 * mediaelement.cpp (Render): use the same logic we used in image
3209 here to always adjust the paint rect when stretch != StretchNone.
3213 2009-08-15 Larry Ewing <lewing@novell.com>
3215 * shape.cpp (MeasureOverride): Stretch to the proper width when
3216 available size in not infinite. Avoid using infinite dimesions as
3217 constraints for Uniform stretches.
3219 Fixes Header stretching in playboy an improves DRT #210.
3223 2009-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
3225 * pipeline.cpp: Quiet some debug spew.
3229 2009-08-14 Larry Ewing <lewing@novell.com>
3231 * grid.cpp (MeasureOverride): properly use min and max.
3233 Fixes regression in DRT #319 from new table code
3237 2009-08-14 Larry Ewing <lewing@novell.com>
3239 * media.cpp: always adjust our paint rectangle when Stretch !=
3242 Fixes DRT #516 and the regression in #422
3246 2009-08-14 Larry Ewing <lewing@novell.com>
3248 * frameworkelement.cpp (Arrange): apply the size constraints after
3249 we the the actualsize back from the element.
3251 * layoutinformation.cpp (GetClip): now that other things are
3252 improved only traverse up one level.
3254 Fixes clipping on the smooth streaming size and DRT #210
3258 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3260 * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
3265 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3267 * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
3268 variables in local variables and clear out the instance variables
3269 before unreffing them - prevents certain rare cases of infinite loops.
3273 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3275 * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
3276 we've been disposed.
3280 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3282 * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
3287 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3289 * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
3290 if we've been disposed.
3294 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3296 * pipeline.cpp: IMediaObject::Dispose: clear the list of events
3297 we were supposed to emit on the main thread.
3301 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3303 * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
3307 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3309 * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
3310 variables in local varaibles and clear out the instance variables
3311 before unreffing them - prevents certain rare cases of infinite loops.
3315 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3317 * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
3318 variables in local variables and clear out the instance variables
3319 before unreffing them - prevents certain rare cases of infinite loops.
3323 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3325 * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
3330 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3332 * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
3333 dependency between MmsPlaylistEntry and Media.
3337 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3339 * pipeline.cpp: Media::Dispose: store a copy of our instance variables
3340 in local variables and clear out the instance variables before
3341 unreffing them - prevents certain rare cases of infinite loops.
3345 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3347 * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
3351 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3353 * pipeline-asf.cpp: Add a few missing unrefs.
3357 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3359 * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
3360 the closure is called.
3364 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3366 * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
3367 can detect if the callback has been called or not.
3371 2009-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
3373 * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
3374 dispose on the media thread, call dispose directly.
3378 2009-08-14 Alan McGovern <amcgovern@novell.com>
3381 * grid.cpp: Rewrite the size allocation code in grid to better
3382 match the microsoft implementation. It works much better for
3383 the pixel and auto cases, but still has some issues with
3384 star columns. r: lewing
3386 2009-08-14 Jeffrey Stedfast <fejj@novell.com>
3388 * application.cpp (GetResource): Close the stream when we're
3389 done. Also changed to check write_cb exists before reading from
3390 the stream - if the callback is NULL, don't even bother.
3391 (GetResourceAsBuffer): Removed.
3392 (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
3393 the streaming ourselves. Also return NULL if writing the stream to
3396 * utils.cpp (managed_stream_open/read/write/etc): Changed to be
3397 internal. These symbols don't need to be publicly exported.
3399 * utils.h: Added a Stream_Close function signature to
3400 ManagedStreamCallbacks.
3402 * bitmapimage.cpp (resource_notify): Make static/internal - does
3403 not need to be publicly exported.
3407 2009-08-14 Stephane Delcroix <sdelcroix@novell.com>
3409 * multiscaleimage.cpp: retry downloading up to 5 times.
3411 2009-08-14 Stephane Delcroix <sdelcroix@novell.com>
3413 * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on
3418 2009-08-13 Larry Ewing <lewing@novell.com>
3420 * usercontrol.cpp (MeasureOverride): don't constrain the results.
3426 2009-08-13 Larry Ewing <lewing@novell.com>
3428 * textblock.cpp (MeasureOverride):
3429 * textbox.cpp (MeasureOverride): ceil our measurement request when
3430 layout rounding is being done so that we don't get rounded down
3431 and forced to wrap. More testing is in order but failure mode for
3434 Fixes wrapping in Playboy and the chess final screen.
3438 2009-08-13 Larry Ewing <lewing@novell.com>
3440 * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
3441 to idle so that firefox and gtk can process events without getting
3442 starved. Improved Quakelight and StrangeAttractor experience.
3446 2009-08-13 Larry Ewing <lewing@novell.com>
3448 * src/brush.cpp: replace all cairo_matrix_invert calls with a
3449 version that warns if it fails.
3453 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
3455 * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
3456 advance width is 0. Fixes test-videobrush-text.xaml to render all
3461 2009-08-13 Chris Toshok <toshok@novell.com>
3463 * xaml.cpp (start_element): If the element is a TextBox.Text
3464 CDATA, treat it as verbatim. Partial fix for drt 2003.
3468 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
3470 * layout.cpp (Layout): Make sure all attributes were able to load
3471 their fonts. If not, we can't proceed. Fixes the NULL TextFont
3474 * textblock.cpp (OnPropertyChanged): Instead of using
3475 UpdateLayoutAttributes(), all we really need to do is call
3476 UpdateFontDescriptions() when the FontSource changes.
3480 2009-08-13 Jeffrey Stedfast <fejj@novell.com>
3482 * fonts.cpp (TextFont::Load): When loading a font face from a
3483 source w/o any families specified, make sure to set master=0 so
3484 that we don't try to get extents from faces[-1].
3488 2009-08-13 Larry Ewing <lewing@novell.com>
3492 * writeablebitmap.cpp (InitializeFromBitmapSource): always use
3493 rgba pixelformat like sl3 does now.
3495 2009-08-12 Chris Toshok <toshok@ximian.com>
3497 * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
3498 "own" (default: true) which, if true, causes the bitmap source to
3499 free the bitmapdata when it's destroyed.
3501 * cbinding.h|cpp: regen
3503 2009-08-12 Alan McGovern <amcgovern@novell.com>
3506 * cbinding.cpp: regen r: toshok
3512 * contentcontrol.cpp:
3513 * frameworkelement.cpp: A ContentControl which has no Template
3514 needs to call into managed land to create a 'default
3515 template'. When the Content is a UIElement, the UIElement is
3516 used as the template root, otherwise a Grid + TextBlock
3517 (with Binding) is used. This is the same as what
3518 ContentPresenter does to its Content property. r: toshok
3520 2009-08-12 Alan McGovern <amcgovern@novell.com>
3522 * uielement.cpp: VisualParent should be set to null before
3523 invalidating the cache otherwise the element might be added
3524 to the dirty lists. This causes issues if the element is
3525 added back into the visual tree at a different level. r:
3528 2009-08-12 Stephane Delcroix <sdelcroix@novell.com>
3530 * multiscaleimage.cpp: clear the cache on source change, cache a NULL
3531 tile on downloader failure (fix drt 2014 for good).
3533 2009-08-12 Stephane Delcroix <sdelcroix@novell.com>
3535 * multiscaleimage.cpp: restore the initial number of concurrent
3536 downloaders, drt 2014 will require a proper fix.
3538 2009-08-12 Chris Toshok <toshok@ximian.com>
3540 * media.h|cpp (class Image): if our source is a BitmapSource,
3541 handle the PixelDataChangedEvent and Invalidate ourselves if it's
3544 * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
3545 handle the PixelDataChangedEvent and notify our listeners to
3546 redraw if it's emitted.
3548 * bitmapsource.h|cpp (class BitmapSource): add an event so classes
3549 using BitmapSources can be notified when the pixel data
3550 changes (primarily for use with WriteableBitmap). Emit it from
3551 BitmapSource::Invalidate.
3553 * type-generated.cpp, cbinding.h|cpp: regen
3555 2009-08-11 Chris Toshok <toshok@ximian.com>
3557 [ each of these changes fixes a line of text in drt 444 ]
3558 * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
3561 * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
3562 UpdateLayoutAttributes if FontSource is changed, so that the
3563 change propagates down to the inlines.
3567 2009-08-11 Larry Ewing <lewing@novell.com>
3569 * grid.cpp (MeasureOverride): adjust row definition values by
3570 max/min values when building up the Actual sizes
3576 2009-08-11 Jeffrey Stedfast <fejj@novell.com>
3578 * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
3579 the TextFontDescription as well as emitting an event so the view
3580 knows it has to re-render. Improves drt 480.
3581 (PasswordBox::OnPropertyChanged): Same.
3582 (TextBox::ClearFontSource): Removed, not used.
3583 (PasswordBox::ClearFontSource): Same.
3587 2009-08-11 Andreia Gaita <avidigal@novell.com>
3589 * runtime.cpp: TimeManager should be the last thing destroyed, other
3590 objects might need to access it while disposing. r: alan
3592 2009-08-11 Stephane Delcroix <sdelcroix@novell.com>
3594 * multiscaleimage.cpp: cast so the modulo operation opers on int,
3595 not guint64. Fix sharedtiles usage. r:shana, lewing
3597 2009-08-11 Jeffrey Stedfast <fejj@novell.com>
3599 * textbox.cpp (TextBoxBase::Paste): Change the multiline
3600 truncation test to explicitly check for \r, \n and 0x2028 instead
3601 of using g_unichar_type() which didn't return the expected values
3602 for these characters. Partial fix for drt 2003.
3603 (*Box::OnPropertyChanged): Updated for AddResource() API change.
3605 * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
3606 AddResource() API change.
3608 * fontmanager.cpp (AddResource): Instead of having our callers
3609 generate a unique resource name, let us do it for them. Don't
3610 bother using mkstemp()/mkdtemp() since our root dir is already
3611 unique. Also fixed to reset the stream resource after consuming it
3612 so that if multiple textblocks/boxes/etc reuse the FontSource,
3613 things work properly. Partial fix for drt 444.
3617 2009-08-11 Alan McGovern <amcgovern@novell.com>
3619 * runtime.cpp: Controls aren't really auto-focused. What
3620 happens is that when a focused control is removed from the
3621 live tree SL does not emit a LostFocus event and so when the
3622 control is added back into the tree it still thinks it has
3623 focus. This call is still needed as there can be pending
3624 GotFocus/LostFocus events waiting to be emitted. r: toshok.
3626 2009-08-11 Alan McGovern <amcgovern@novell.com>
3628 * runtime.cpp: Make HandleUIKeyPress do the same thing as
3629 HandleUIKeyRelease when there is no toplevel so it doesn't
3632 2009-08-10 Larry Ewing <lewing@novell.com>
3634 * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
3635 jpg abort the getresource call.
3637 2009-08-07 Larry Ewing <lewing@novell.com>
3639 * dirty.cpp (UpdateLayout): don't use the toplevel hack on
3642 Gets DRT #516 very close to passing slight layout problems left.
3644 2009-08-10 Andreia Gaita <avidigal@novell.com>
3646 * ptr.h: Change the base class to not allow direct casts to Value
3647 objects. Add cast operator to cast between DO classes directly
3649 2009-08-10 Andreia Gaita <avidigal@novell.com>
3651 * animation.[h|cpp]: Check for valid applier before trying to use it,
3652 it could be disposing, same for targetprop.
3653 * timemanager.cpp: clear applier when disposing
3655 2009-08-10 Andreia Gaita <avidigal@novell.com>
3657 * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
3658 pointer for DependencyObject.
3659 * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
3660 * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
3661 them when destroying
3663 2009-08-10 Alan McGovern <amcgovern@novell.com>
3665 * frameworkelement.cpp: A new measure pass should be made if
3666 either the available width *or* available height has changed
3667 since the last measure pass.
3669 2009-08-10 Andreia Gaita <avidigal@novell.com>
3671 * ptr.h: fix assignment operators, the copy by reference ones were
3672 causing the pointer to be destroyed prematurely when assigning via
3675 2009-08-08 Chris Toshok <toshok@ximian.com>
3677 * fontmanager.cpp (FontManager::AddResource): pass stream->handle
3678 as the first arg to stream->Read, not stream itself. Also, get
3679 rid of "total" and just pass a 0 offset for each read, since we're
3680 writing the full buffer's contents up to nread each time anyway.
3682 2009-08-07 Andreia Gaita <avidigal@novell.com>
3686 * multiscaleimage.cpp: Fix the type of the left shit operations to
3687 avoid overflows. Make it an inline function for easier maintenance.
3688 * tilesource.[h|cpp]: Fix the type of the image width and height,
3689 should be bigger than int.
3691 2009-08-07 Jeffrey Stedfast <fejj@novell.com>
3695 * textbox.cpp (TextBox::OnPropertyChanged): If setting
3696 SelectedText to "", don't emit TextChanged events if there was no
3698 (PasswordBox::OnPropertyChanged): Same.
3700 2009-08-06 Chris Toshok <toshok@ximian.com>
3702 * runtime.cpp (Surface::tick_after_attach_reached): the ordering
3703 of code between this method and Surface::ToplevelLoaded is likely
3704 still somewhat wrong, but moving the Emit here fixes drt #21.
3706 2009-08-06 Chris Toshok <toshok@ximian.com>
3708 * window-gtk.cpp: move the InvokeTickCalls from here...
3710 * runtime.cpp: to the HandleUI* methods here, so they will be used
3711 in both windowed and windowless codepaths.
3713 2009-08-06 Chris Toshok <toshok@ximian.com>
3715 * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
3716 another argument now (the data object passed to AddTickCall) so we
3717 can differentiate callbacks properly.
3719 * runtime.h|cpp (Surface::Attach): we don't return true from
3720 IsLoaded until after the first tick, so that our measure pass has
3721 been run (and contentpresenters are created for all content
3722 controls.) register the tick call here (after removing any that
3723 may have already been added).
3724 (Surface::tick_after_attach_reached): set ticked_after_attach to
3726 (Surface::IsLoaded): we require ticked_after_attach to be true
3729 * cbinding.h|cpp: regen.
3731 2009-08-06 Jeffrey Stedfast <fejj@novell.com>
3733 * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
3734 selection, just set the selection to the cursor position. This
3735 way, if the control gets programatically Focus()'d again, then the
3736 cursor will be where it was just before the control lost
3737 focus. Partial fix for drt 2003.
3739 2009-08-06 Jackson Harper <jackson@ximian.com>
3741 * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
3742 property has already been set.
3744 2009-08-06 Jackson Harper <jackson@ximian.com>
3746 * xaml.cpp: Its possible that a buffered element can add a new
3747 namespace that start_element_handler will not know about, just
3748 ignore this error and the namespace will be added when the buffer
3751 2009-08-06 Jackson Harper <jackson@ximian.com>
3753 * xaml.cpp: Handle null in the print_tree debug code. (This can
3754 occur when loading a null template)
3756 2009-08-05 Larry Ewing <lewing@novell.com>
3758 * frameworkelement.cpp (UpdateLayout): revert an accidental
3761 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
3763 * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
3764 should not copy the text buffer to the clipboard if the contents
3767 2009-08-05 Larry Ewing <lewing@novell.com>
3769 * uielement.cpp (ElementRemoved): clear the desired size when
3770 removing the element.
3772 * layoutinformation.cpp: partially revert one of the workarounds.
3774 * frameworkelement.cpp (Arrange): get the old_size from the
3775 RenderSize not the ActualWidth.
3777 2009-08-05 Chris Toshok <toshok@ximian.com>
3779 * popup.cpp (class GenerationClosure): new closure for emiting the
3780 Opened and Closed events.
3781 (Popup::emit_opened, Popup::emit_closed): pass the generation from
3782 the closure to ->Emit.
3783 (Popup::OnPropertyChanged): for the tick call, pass a closure that
3784 contains the current event generation.
3786 * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
3787 factor out the loop for invoking tick calls here and call it from
3788 the source tick method.
3790 * window-gtk.cpp (MoonWindowGtk::button_press)
3791 (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
3792 (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
3793 (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
3794 (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
3795 TimeManager::InvokeTickCalls from each of these methods before we
3796 call the Surface::HandleUI* method.
3798 * dependencyobject.h (class EventObject): make a couple of api
3800 (AddTickCall*): add an "EventObject* data" parameter. if it's
3801 NULL, pass "this", so we have the current behavior.
3802 (DoEmit/Emit): add a "starting_generation" optional argument. if
3803 it's supplied, we invoke only those handlers with tokens less than
3804 the starting_generation (i.e. those handlers that were registered
3805 before the event was generated.)
3807 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
3809 * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
3810 FontSource property when the FontFamily property changes.
3811 (TextBox::OnPropertyChanged): Handle FontSource property changes.
3812 (PasswordBox::OnPropertyChanged): Same.
3814 * textblock.cpp (CleanupDownloaders): Free the font_source string
3816 (SetFontSource): Update the font_source string based on the
3818 (UpdateLayoutAttributes): No longer need to get the font_source
3819 string, we already have it.
3820 (UpdateFontDescriptions): Same.
3821 (OnCollectionItemChanged): Here too.
3822 (OnPropertyChanged): Update the font_source string when the
3823 FontSource property changes.
3825 2009-08-05 Jeffrey Stedfast <fejj@novell.com>
3827 * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
3828 GdkEventButton structure, use the new MouseEventArgs accessors
3831 * eventargs.cpp (GetButton): Get the id of the button pressed.
3832 (GetClickCount): Get the number of clicks on the button.
3834 2009-08-05 Alan McGovern <amcgovern@novell.com>
3836 * panel.cpp: The LogicalParent needs to be set before the
3837 element is added, otherwise the Loaded event can be fired
3838 before LogicalParent is set.
3840 2009-08-04 Larry Ewing <lewing@novell.com>
3842 * uielement.cpp (DoMeasure): invalidate up the tree more
3843 agressively. Fixes DRT #190 regression.
3845 2009-08-04 Jeffrey Stedfast <fejj@novell.com>
3847 * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
3848 callback for the MultiClick event.
3849 (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
3850 double and triple mouse clicks.
3852 * uielement.h: Added a MosueLeftButtonMultiClickEvent.
3854 * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
3855 (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
3857 * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
3859 2009-08-04 Jeffrey Stedfast <fejj@novell.com>
3861 * utils.cpp (write_all): Changed to just return int (-1 for fail,
3863 (ExtractFile): Don't fsync(). Saves us a lot of time.
3865 2009-08-03 Larry Ewing <lewing@novell.com>
3867 * shape.cpp (ArrangeOverride): clear the current path.
3869 2009-08-03 Larry Ewing <lewing@novell.com>
3871 * textbox.cpp (OnModelChanged): InvalidateMeasure when things
3874 2009-08-03 Jeffrey Stedfast <fejj@novell.com>
3876 * fontmanager.cpp (AddResource): Implemented a version of this
3877 interface that can take a ManagedStreamCallbacks argument.
3879 * application.cpp (GetResourceAsPath): If we are adding the X's
3880 ourselves, use MakeTempDir() instead of CreateTempDir().
3882 2009-07-31 Larry Ewing <lewing@novell.com>
3884 * layoutinformation.cpp (GetClip): add another hack for layoutclip
3885 on Controls while things are in flux.
3887 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3889 * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
3890 the work was enqueued or not.
3892 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3894 * pipeline.cpp: Media: use the new ClearQueue overload instead of
3895 spreading the logic all over the place.
3897 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3899 * pipeline.cpp: Media: add a ClearQueue overload which optionally
3902 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3904 * playlist.cpp: Don't g_warn something which can happen in normal
3907 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3909 * mediaplayer.cpp: Plug a leak in one rare code-path.
3911 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3913 * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
3915 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3917 * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
3919 2009-07-31 Jeffrey Stedfast <fejj@novell.com>
3921 * fonts.cpp (LoadPortableUserInterface): Always load the en-US
3922 font(s) first, and then load the preferred CJK font, followed by
3923 the rest. This improves drt 414.
3925 * fontmanager.cpp (GetExtents): Improved baseline alignment by
3926 adjusting Descent if Height is larger than Ascent +
3927 Descent. Especially visible with drt 107's Deobfuscated Brauhaus
3930 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3932 * deployment.cpp: Dispose: we need to unref and null out the application.
3934 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3938 * eventargs.cpp|h: Set the object's type upon construction instead
3939 of using SetObjectType right after. This is useful when tracking
3940 objects by type - the ctor also shows up.
3942 * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
3943 a Type::Kind argument.
3945 2009-07-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
3947 * debug.cpp: Make the stacktrace pipes thread-local. This way
3948 printing stacktraces from several threads at the same time doesn't
3949 result in a big mess.
3951 2009-07-30 Larry Ewing <lewing@novell.com>
3953 * layoutinformation.cpp (GetClip): add a workaround for the panel
3954 case while layoutinformation is refactored.
3956 2009-07-30 Larry Ewing <lewing@novell.com>
3958 * layoutinformation.cpp: repair a merge bug.
3960 2009-07-30 Larry Ewing <lewing@novell.com>
3962 * layoutinformation.cpp, layoutinformation.h: move layoutinformation
3963 out of uielement.h. Compute the layout clip on the fly.
3966 * dependencyproperty.g.cpp:
3967 * frameworkelement.cpp:
3968 * frameworkelement.h:
3979 * uielement.h: start reworking layout logic at we refactor
3980 layoutinformation. Use RenderLayoutClip where appropriate.
3982 2009-07-30 Jeffrey Stedfast <fejj@novell.com>
3984 * fontmanager.cpp (GetExtents): Much better fix than the
3985 string-comparison hack. Poke at the TrueType/OpenType OS/2 table
3986 and use the usWinAscent/usWinDescent values since this is what
3987 most Windows applications (brokenly) use according to some info I
3988 found on the web. Low and behold, this also makes the Adobe Caslon
3989 Pro metrics work out exactly like they do in Silverlight, so I'm
3990 guessing that the info I found is accurate :-)
3992 2009-07-30 Larry Ewing <lewing@novell.com>
3994 * uielement.cpp (DoArrange): revert the parent invalidation change as it
3997 2009-07-30 Larry Ewing <lewing@novell.com>
3999 * control.cpp (OnPropertyChanged): update the layout if the
4002 2009-07-30 Larry Ewing <lewing@novell.com>
4004 * uielement.cpp (DoArrange): remove the parent invalidation call
4005 it shouldn't be required now and is contraindicated by DRT #501.
4007 * runtime.cpp: InvalidateMeasure on resize.
4009 2009-07-30 Alan McGovern <amcgovern@novell.com>
4012 * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
4015 * dependencyobject.h:
4016 * dependencyobject.cpp: Implement a new method for adding
4017 callbacks to invoke asynchronous events. They can't be
4018 invoked using the regular AddTickCall as that causes the
4019 ordering of mouse events and asynchronous events to be
4020 incorrect preventing drt 333, 476 and some others from
4023 2009-07-30 Jeffrey Stedfast <fejj@novell.com>
4025 * fontmanager.cpp (GetExtents): Now uses the alternative method of
4026 getting font metrics. Also, when dealing with Adobe fonts, use the
4027 bbox to get metrics rather than using the normal
4028 ascender/descender/height values.
4030 2009-07-30 Jackson Harper <jackson@ximian.com>
4032 * xaml.cpp: Swallow white space before linebreaks.
4034 2009-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
4036 * src.mdp: Connect the Build command in
4037 MonoDevelop with 'make install'.
4039 2009-07-30 Andreia Gaita <avidigal@novell.com>
4041 * multiscaleimage.cpp: leak and initialization fixes
4043 2009-07-30 Andreia Gaita <avidigal@novell.com>
4045 * shape.cpp: use smart pointer to avoid unreffing by hand
4047 2009-07-30 Andreia Gaita <avidigal@novell.com>
4049 * timeline.cpp: leak fix
4051 2009-07-30 Andreia Gaita <avidigal@novell.com>
4053 * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
4054 * Makefile.am: updated
4056 2009-07-29 Larry Ewing <lewing@novell.com>
4058 * border.cpp (ArrangeOverride): return the input now that it is
4061 * frameworkelement.cpp: short circuit Measure and Arrange if the
4062 element is collapsed.
4064 2009-07-29 Jeffrey Stedfast <fejj@novell.com>
4066 * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
4067 of the keyboard event was handled (meaning the state has changed).
4068 (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
4071 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4073 * shape.cpp: Plug a leak.
4075 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4077 * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
4078 semantics as EventObject::Emit: unref the event args at the end of
4081 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4083 * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
4084 unreffing the reffed media we've got.
4086 2009-07-29 Sebastien Pouliot <sebastien@ximian.com>
4088 * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
4089 Helper.CheckIntegrity (System.Windows.dll)
4091 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4093 * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
4094 improvement: return true immediately if we've actually managed to
4095 open a demuxer instead of enqueuing another call to
4098 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4102 * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
4103 to the playlist before initializing it, since initializing it may
4104 end up opening it right away and then it must be present in the
4107 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4109 * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
4110 created when done with them.
4112 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4114 * pipeline.cpp: printf -> LOG_PIPELINE.
4116 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4118 * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
4119 when we're done with it.
4121 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4123 * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
4124 unref it when done with it.
4126 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4128 * dependencyobject.h: Make EventObject::GetObjectType
4129 non-virtual. No need for a virtual method anymore, since we store
4130 the type on the object itself.
4132 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4134 * application.cpp: unref the downloader when it has finished.
4136 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4138 * utils.cpp|h: Cancellable: use strong typing to store the
4139 downloader and ref it. This way the cancel callback can use the
4142 2009-07-29 Alan McGovern <amcgovern@novell.com>
4147 * cbinding.cpp: 1) TextBox cannot hook into Key press events
4148 in unmanaged code otherwise they never propagate to managed
4149 and the user cannot intercept them. Instead of hooking to
4150 the event in native code, just call native
4151 TextBox::OnKeyDown in the managed override.
4152 2) Key press events are actually handled in two different
4153 places. 'Navigation' keypresses like Left/Right/PgUp are
4154 handled when the textbox OnKeyDown virtual method is
4155 invoked. 'Character' keypresses like 'a', 'b', 'c' are
4156 handled after the KeyDown event is emitted
4157 3) If a key press does not affect the textbox state (i.e.
4158 pressing 'left' when the caret is already at the very left),
4159 then the keypress is not handled.
4160 4) The KeyDown event is emitted even if OnKeyDown is overriden
4161 and the base method is not invoked.
4162 5) The tab key should be interpreted as 'Focus next control'
4163 only after the KeyDown event handlers have run and the key
4164 press is not handled.
4166 2009-07-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
4168 * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
4169 know we can't decode. This means that if the user does not have
4170 MS codecs (or any other codecs) installed, he'll get the download
4171 codecs dialog for wmav3 media too.
4173 2009-07-28 Sebastien Pouliot <sebastien@ximian.com>
4175 * mediaelement.cpp: Add a check if the codecs have already been
4176 downloaded/installed without refreshing the browser. This will
4177 stop additional dialogs showing up and fix a crash (x86_64) if
4178 the codecs are downloaded/installed a second time in the same
4181 2009-07-27 Larry Ewing <lewing@novell.com>
4184 * src/frameworkelement.cpp:
4187 * src/textblock.cpp:
4188 * src/usercontrol.cpp: Move the alignment logic out of the
4189 controls and into the Arrange call now.
4191 Fixes DRT #335 improves several others.
4193 2009-07-28 Jackson Harper <jackson@ximian.com>
4195 * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
4197 - Don't create a Matrix for TRANSFORM properties if "Identity" was
4198 used as the string. (kinda seems like an SL bug to me).
4200 2009-07-28 Jeffrey Stedfast <fejj@novell.com>
4202 * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
4204 * window-gtk.cpp (button_press): Revert change to drop
4205 2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
4206 we find a better way (also, 234 is still broken even with this
4207 change, which breaks 337 and possibly makes other
4208 TextBox/PasswordBox drts unfixable).
4210 2009-07-27 Larry Ewing <lewing@novell.com>
4212 * glyphs.cpp, glyphs.h: Start implmenting glyph layout. Fixes DRT #442.
4214 2009-07-27 Larry Ewing <lewing@novell.com>
4216 * frameworkelement.cpp: Always round down when doing layout
4219 * uielement.cpp (OnPropertyChanged): Invalidate layout on
4224 2009-07-27 Chris Toshok <toshok@ximian.com>
4226 * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
4227 handler *after* all registered handlers. part of the fix for drt
4230 * window-gtk.cpp (MoonWindowGtk::button_press): ignore
4231 double-click and triple click gdk events here. part of the fix
4234 2009-07-27 Jackson Harper <jackson@ximian.com>
4236 * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB. It
4237 is legal to hydrate a top level managed non DOB class.
4238 * cbinding.cpp|h: regen
4240 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
4242 * mp3.cpp: When seeking and we don't have enough data to seek to
4243 the desired pts, try again a bit later. Fixes MS DRT #59.
4245 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
4247 * src.mdp: Use Makefile integration.
4249 2009-07-27 Alan McGovern <amcgovern@novell.com>
4251 * uielement.cpp: Default styles are applied even if the user
4252 applies a style. Fixes some visual glitches in the controls
4255 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
4257 * pipeline.cpp|h: Use Application::GetResource instead of creating
4258 downloaders to get data.
4260 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
4262 * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
4265 2009-07-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
4267 * application.cpp: GetResource: set the notify_size callback
4268 on the downloader too. Media must known the size whenever possible.
4270 2009-07-27 Larry Ewing <lewing@novell.com>
4272 * uielement.cpp (GetTransformToUIElementWithError): signal and
4273 error in the to_element doesn't have a Surface case.
4275 2009-07-26 Larry Ewing <lewing@novell.com>
4277 * rect.h: make PointInside inclusive on the top/left.
4279 2009-07-24 Larry Ewing <lewing@novell.com>
4281 * textblock.cpp: Rework the bounds computation to be the max of
4282 the actual and the framework element settings. Fixes DRT #245.
4284 2009-07-24 Larry Ewing <lewing@novell.com>
4286 * border.cpp: Apply the default constraints more carefully.
4288 * src/frameworkelement.cpp, src/frameworkelement.h: add
4289 ApplySizeContraints method, use it.
4293 * src/textblock.cpp:
4294 * src/usercontrol.cpp: use ApplySizeContraints method.
4296 2009-07-24 Larry Ewing <lewing@novell.com>
4298 Rename some of the layout information based on some
4301 2009-07-24 Jeffrey Stedfast <fejj@novell.com>
4303 * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
4304 width/height properties change, pass those values along to our
4305 TextBoxView as well.
4307 2009-07-24 Jackson Harper <jackson@ximian.com>
4309 * xaml.cpp: Instead of cloning the element set it's namescope
4310 explicitly so it doesn't get registered in another namescope when
4311 it is used as a property of an element in another namescope.
4313 2009-07-23 Jeffrey Stedfast <fejj@novell.com>
4315 * downloader.cpp (same_domain): Fixed to be safe if/when a uri
4318 2009-07-23 Alan McGovern <amcgovern@novell.com>
4320 * animation.cpp: If the initial value is null, create a Value
4321 with the correct type with IsNull set to true.
4323 2009-07-23 Jackson Harper <jackson@ximian.com>
4325 * xaml.cpp: If we are getting a named item from the app resources
4326 we should clone it since it comes from a different namescope. This
4327 allows you to have named items in app.resources be referenced in
4328 control code as a static resource even if it has the same name as
4329 an object in the control code.
4331 2009-07-23 Jeffrey Stedfast <fejj@novell.com>
4333 * fonts.cpp (LoadPortableUserInterface): Even if we are a
4334 Silverlight 2.0 app, we still need to load Lucida Sans for the
4335 font face extents (Lucida extents seem to be very close to what
4336 Microsoft Silverlight is using).
4338 2009-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
4340 * runtime.cpp: HandleUIKeyRelease: add a null check before
4341 accessing toplevel. Apparently toplevel can be null when the
4342 site fails to load completely (mstv.cz / bug #506306).
4344 2009-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
4346 * media.h: MarkerReachedEventArgs: make Markers accessible to
4350 * cbinding.cpp: Regenerated.
4352 2009-07-22 Chris Toshok <toshok@ximian.com>
4354 * animation.h|cpp: add some more accessors for AnimationStorages
4355 so we can clone them.
4357 * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
4358 from here, and put it in DependencyObject where (imo) it belonged
4361 * dependencyobject.h|cpp: move the AnimationStorage stuff here,
4362 and also add support for cloning the storage while we're cloning
4363 the object. This means that new animations started against
4364 existing objects (with animations) will inherit the right reset
4365 value. This fixes the button animation regression.
4367 2009-07-22 Jeffrey Stedfast <fejj@novell.com>
4369 * fonts.cpp (LoadPortableUserInterface): If the application is a
4370 Silverlight 2.0 app, default to Verdana instead of Lucida Sans
4373 * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
4374 is a no-op for ReadOnly TextBox controls.
4376 2009-07-22 Sebastien Pouliot <sebastien@ximian.com>
4378 * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
4379 the current timemanager.
4381 2009-07-21 Jeffrey Stedfast <fejj@novell.com>
4383 * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
4385 (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
4387 (TextBoxBase::OnKeyDown): If there is no selection and the user
4388 invokes the Cut or Copy commands, do not overwrite the clipboard
4389 buffer with an empty string.
4391 2009-07-21 Jackson Harper <jackson@ximian.com>
4393 * xaml.cpp: Raise errors from managed SetProperty.
4395 2009-07-21 Jackson Harper <jackson@ximian.com>
4397 * xaml.cpp: Don't raise errors if we are a managed element, let
4398 the managed SetProperty handle that stuff.
4400 2009-07-21 Alan McGovern <amcgovern@novell.com>
4403 * dependencyproperty.g.cpp: The issue with auto creating
4404 PathGeometry.Figures appears to be fixed so add
4405 AutoCreateValue to FiguresProperty and see how the bots
4408 2009-07-20 Chris Toshok <toshok@ximian.com>
4410 * application.h|cpp: add a ResourceBase parameter to all the
4411 GetResource calls and to the GetResourceCallback delegate type.
4413 * dependencyobject.h (DependencyObject::SetResourceBase,
4414 DependencyObject::GetResourceBase): new methods.
4416 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
4417 "inherit" resource base from our parent (this might be very, very
4419 (DependencyObject::Initialize): init resource_base to null.
4420 (DependencyObject::~DependencyObject): free resource_base.
4422 * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
4423 resource using our resource base.
4425 * template.cpp (FrameworkTemplate::GetVisualTree): use the same
4426 resource base when expanding the template.
4428 * textblock.cpp (Inline::AddFontResource): locate the font using
4430 (TextBlock::AddFontResource): same.
4432 * textbox.cpp (TextBoxBase::AddFontResource): same.
4433 using our resource base.
4435 * glyphs.cpp (Glyphs::SetFontResource): same.
4437 * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
4438 those SetSurface calls, and put it here. Also, set the resource
4439 base at the same time.
4440 (XamlLoader::Initialize): store off the resource_base.
4441 (XamlLoader::~XamlLoader): and free it.
4442 (xaml_loader_new): take a resourceBase, and pass it along.
4443 (XamlLoader::HydrateFromString): set the ResourceBase on the
4445 (create_element_info_from_imported_managed_type): remove the
4446 SetSurface call, just call XamlParserInfo::AddCreatedElement.
4447 (XamlElementInstanceNative::CreateItem): same.
4448 (XamlElementInfoManaged::CreateElementInstance): same.
4449 (XamlElementInfoManaged::CreateWrappedElementInstance): same.
4451 * xaml.h (class XamlLoader): add a common Initialize method, and a
4452 ctor overload that takes a "resource base", which is the uri which
4453 we're loading from. Also add a GetResourceBase() accessor.
4457 2009-07-20 Larry Ewing <lewing@novell.com>
4459 * uielement.cpp (ComputeTransform): add a hack for placing popup
4462 * popup.cpp: call updatetransform on our child whenever the offset
4463 values change. Fixes DRTs #325 #503
4465 2009-07-18 Jackson Harper <jackson@ximian.com>
4467 * xaml.h|cpp: New flag on the loader for determining whether or
4468 not to auto import the default SL namespace.
4469 - Throw the proper error if the default namespace isn't available.
4470 * template.cpp: Templates get the default namespace auto
4473 2009-07-17 Larry Ewing <lewing@novell.com>
4475 * runtime.cpp (Attach): copy the current framerate to the new
4478 2009-07-17 Jeffrey Stedfast <fejj@novell.com>
4480 * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
4482 (TextBoxBase::Paste): Consider the SelectionLength in our
4483 MaxLength overflow calculation.
4484 (TextBuffer::ctor): Instead of taking ownership of a string
4485 buffer, just copy it instead. This keeps memory management more
4487 (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
4489 (TextBoxUndoActionReplace::ctor): Same, so copy it.
4490 (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
4491 the undo action. I think some of these situations leaked before.
4493 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
4495 * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
4497 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
4499 * multiscaleimage.cpp: more protections against crash with 31 layers
4501 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
4503 * multiscaleimage.cpp: allow up to 31 layers.
4505 2009-07-17 Stephane Delcroix <sdelcroix@novell.com>
4507 * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
4509 2009-07-17 Alan McGovern <amcgovern@novell.com>
4511 * runtime.cpp: Correctly set 'emittingMouseEvent' to
4512 true/false when we receive a mouse event. Fixes some mouse
4513 capture issues in drt 535
4515 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4517 * playlist.cpp|h: Make the *Async methods really async, and add corresponding
4520 * mediaplayer.cpp: Don't allow Play while we're seeking.
4522 * mediaelement.cpp: When calling any of the async methods on the playlist,
4523 set the expected state immediately, since CurrentState is not async. Also
4524 allow Play/Pause/Stop if we're already in the desired state, since there might
4525 be another state changed pending.
4527 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4529 * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
4531 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4533 * pipeline.cpp|h: Notify the decoder when a seek has completed so
4534 that it can clean its state properly. FillBuffers: the final buffer size
4535 is equal to the smallest buffer size of all the streams, not the buffer
4536 size of the last stream.
4538 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4540 * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
4541 has already finished.
4543 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4545 * playlist.cpp|h: Fix IsSingleFile implementation.
4547 * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
4548 a Stop for non-playlist media.
4550 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4552 * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
4553 it whenever we stop the audio. AdvanceFrame: For media with a specified
4554 duration stop the audio when we've reached the desired duration.
4556 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4558 * mediaelement.cpp: OpenCompletedHander: Before emitting
4559 DownloadProgressChangedEvent get the highest DownloadProgress value
4560 from either our own dependency property or the media. For mms streams
4561 download progress needs to be 1.0 when emitting MediaOpenedEvent,
4562 the mms code sets media's DownloadProgress to 1.0 after parsing the
4563 asf header correctly, but since the media emits the DownloadProgressChanged
4564 event async, the dependency property in MediaElement hasn't been updated
4565 yet in OpenCompletedHandler.
4567 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4569 * pipeline.cpp: Allow buffering progress to go down, not only up.
4570 Also fix progress events to only emit if delta > 0.5% or if equal
4571 to lower/upper limits.
4573 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4575 * pipeline.cpp|h: When we get a decode frame request from another
4576 thread, store the request on the demuxer in a list, instead of on the
4577 media thread's stack. This ensures that decode frame requests are
4578 decoded in the same order they're requested.
4583 * type-generated.cpp: Regenerated.
4585 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4587 * playlist.cpp|h: Added and Emit EntryChangedEvent.
4589 * type-generated.cpp: Regenerated.
4591 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4593 * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
4596 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4598 * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
4599 buffer level will fluctuate as we play.
4601 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4603 * mediaelement.cpp|h: When we pause, store the current position, which we must return
4604 while paused. It may differ from the actual position when we pause, since the actual
4605 pause is done async.
4607 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4609 * mediaplayer.cpp|h:
4610 * mediaelement.cpp|h: Use a property value provider for
4611 Render/DroppedFramesPerSecond.
4613 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4615 * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
4616 call us from a worker thread.
4618 2009-07-16 Jackson Harper <jackson@ximian.com>
4620 * xaml.cpp: When creating user controls make sure that we are
4621 hydrating if an x:Class type name is used.
4623 2009-07-16 Jeffrey Stedfast <fejj@novell.com>
4625 * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
4626 'atomic' argument. If atomic is true, then the buffer is not
4627 growable. This is the behavior we want for TextBoxBase::Paste(),
4628 but not TextBoxBase::Commit() (which needs to allow growable
4629 insert actions so that Undo removes the string of text the user
4630 just typed as opposed to just the most recent character).
4631 (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
4632 TextBoxUndoActionInsert::.ctor().
4634 2009-07-16 Alan McGovern <amcgovern@novell.com>
4639 * uielement.cpp: 1) If the Control is not attached to a
4640 subtree which has been loaded, don't propagate IsEnabled to
4642 2) Whenever a Control is loaded we traverse it's visual
4643 parents until we find another control and propagate the
4646 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
4648 * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
4649 properties as AlwaysChange. fix drt #291.
4651 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4653 * dependencyobject.cpp: Retrieve all instance variables we need
4654 into local variables before decreasing the refcount. If the
4655 refcount is > 0 after decreasing it, we can't access instance
4656 variables anymore, since another thread might have unreffed which
4657 would cause the object to be deleted already.
4659 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4661 * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
4664 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4666 * dependencyobject.cpp: Add sanity check for refcount < 0.
4668 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4670 * dependencyobject.cpp: Move sanity verification into #if SANITY.
4672 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4674 * dependencyobject.h: Is, GetType, GetTypeName: use the Type
4675 overloads which takes a Deployment and provide our deployment
4678 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4680 * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
4681 which takes a Deployment argument for when we already have the
4682 Deployment handy. This way we can avoid hitting
4683 Deployment::GetCurrent on some frequently used methods.
4685 * type.h: Regenerated.
4687 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4689 * runtime.h: Add stack trace to warning.
4691 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4693 * audio.cpp: Underflowed: if we haven't ended and don't have any
4694 more frames, we need to set the Waiting bit so that we start
4695 playing again when we get more frames.
4697 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
4699 * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
4700 avoid issues while reusing dlders for the same images, like in drt2013
4702 2009-07-16 Stephane Delcroix <sdelcroix@novell.com>
4704 * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
4705 on tilesource InvalidateTileLayer ().
4707 2009-07-16 Jackson Harper <jackson@ximian.com>
4709 * xaml.cpp: Remove some dead code.
4711 2009-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
4713 * deployment.h: DeploymentStack: Added to ease push/pop current
4714 deployment when calling into a browser.
4716 2009-07-15 Chris Toshok <toshok@ximian.com>
4718 * clock.h|cpp (Clock::CalculateFillTime): split this out from
4719 Clock::Begin since we can seek on a clock that hasn't actually hit
4721 (Clock::Begin): call CalculateFillTime.
4722 (Clock::UpdateFromParentTime): change our calculations slightly
4723 for what localTime is in the face of a seek, and update
4724 progress/localtime even when stopped. Also, call
4725 CalculateFillTime if we're seeking on a clock that hasn't started,
4726 to make sure we get the proper progress.
4727 (Clock::Seek): don't apply the SpeedRatio here, we do it in
4728 UpdateFromParentTime.
4730 * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
4732 (AnimationStorage::UpdatePropertyValue): pass the stopValue or
4733 baseValue as the defaultDestinationValue to
4734 AnimationClock::GetCurrentValue.
4735 (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
4736 (DoubleAnimation::GetCurrentValue): if there's a correctly typed
4737 defaultDestinationValue, use that before the base case of end =
4739 (ColorAnimation::GetCurrentValue): same.
4740 (PointAnimation::GetCurrentValue): same.
4742 2009-07-15 Jackson Harper <jackson@ximian.com>
4744 * xaml.cpp|h: Consolidate some of the data passed to
4745 every callback and not used much into a struct.
4747 2009-07-15 Jeffrey Stedfast <fejj@novell.com>
4749 * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
4750 return NULL, so properly handle this error condition.
4751 (IndexFontFile): Same.
4752 (FontManager::OpenFontFace): Here too.
4753 (OpenSystemFont): Don't destroy the FcPattern until after opening
4754 the font (otherwise the filename will be free'd memory).
4756 * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
4757 get the brush used for rendering the blinking caret. This is a 3.0
4760 2009-07-15 Alan McGovern <amcgovern@novell.com>
4763 * control.cpp: Remove the Control::SetVisualParent override
4764 which ensures Control::IsEnabled is propagated correctly as
4765 this needs to be performed in UIElement::SetVisualParent.
4766 Set the subtreeobject before calling
4767 FrameworkElement::ElementAdded otherwise Control::IsEnabled
4768 cannot be propagated.
4771 * uielement.cpp: Whenever the visual parent is changed on a
4772 UIElement we need to propagate Control::IsEnabled changes
4773 down the tree. Allows drt 557 to get a lot further.
4775 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4777 * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
4779 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4781 * pipeline.cpp: When seeking, reset buffering progress to 0.
4783 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4785 * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
4786 (that we know of), so initialize DownloadProgress to 1.0.
4788 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4790 * mediaelement.cpp: Don't emit CurrentStateChanged after calling
4791 SetState, since SetState will also emit the event.
4793 2009-07-15 Alan McGovern <amcgovern@novell.com>
4795 * tabnavigationwalker.cpp: If a child node is disabled, there
4796 is no point in walking its children or attempting to tab to
4799 2009-07-15 Jackson Harper <jackson@ximian.com>
4801 * xaml.cpp: We don't want to auto import the SL namespaces when
4804 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
4806 * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
4808 * cbinding.cpp|h: Regenerated.
4810 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
4812 * bitmapimage.h|cpp: drop the downloader references, rely on
4813 Application::GetResource () for getting from resource AND downloading. The
4814 old downloader mechanism for v1 js callbacks.
4816 2009-07-14 Stephane Delcroix <sdelcroix@novell.com>
4818 * application.h|cpp: Application.GetResource () now try to get the resource
4819 from the managed callback, then fallback to downloading.
4821 2009-07-14 Stephane Delcroix <sdelcroix@novell.com>
4823 * utils.h|cpp: Cancellable class, passed as method argument, allows
4824 to abort an async action.
4826 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
4828 * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
4829 hook itself in and invalidate the cache
4831 2009-07-15 Stephane Delcroix <sdelcroix@novell.com>
4833 * tilesource.h|cpp: stub InvalidateTileLayer
4835 2009-07-15 Alan McGovern <amcgovern@novell.com>
4837 * control.cpp: Ensure that the control loses focus when it is
4838 disabled even if there are no other focusable controls. Also
4839 ensure the surface is not null before using it, fixes a
4842 2009-07-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
4844 * error.h: ErrorEventArg: Add accessors that can be pinvoked.
4846 * cbinding.cpp|h: Regenerated.
4848 2009-07-15 Alan McGovern <amcgovern@novell.com>
4850 * control.cpp: When the focused control is disabled, tab to
4851 the next suitable control.
4853 2009-07-15 Alan McGovern <amcgovern@novell.com>
4856 * runtime.cpp: Implement the default autofocusing behaviour
4857 which silverlight exhibits. Apparently if the root control
4858 is focused, silverlight will keep attempting to focus a
4859 child of that control until it succeeds. Once a child
4860 control is focused, the focus changed events are emitted
4861 immediately, ignoring the usual focusing rules. Fixes DRT
4864 2009-07-15 Alan McGovern <amcgovern@novell.com>
4866 * uielement.cpp: When clearing the Loaded flag on a UIElement,
4867 we should clear the flag on all visual children too.
4869 2009-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
4871 * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
4873 2009-07-14 Larry Ewing <lewing@novell.com>
4875 * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
4876 bounds when the bg changes. Fixes 641
4878 2009-07-14 Larry Ewing <lewing@novell.com>
4880 * border.cpp (OnSubPropertyChanged): elements must listen to
4881 subproperty changes for brushes. Fixes 2020
4883 2009-07-14 Alan McGovern <amcgovern@novell.com>
4885 * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
4886 called on a Control with the 'Cycle' navigation mode and
4887 none of the children of that node can be tabbed to, then
4888 focus remains on that control.
4890 2009-07-13 Jeffrey Stedfast <fejj@novell.com>
4892 * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
4893 string array until after we've finished using the hash
4894 table. Prevents FMRs.
4896 2009-07-13 Jackson Harper <jackson@ximian.com>
4898 * xaml.cpp: Don't allow setting x:Name and Name on the same
4900 - Raise an error if we try to set a property to an incompatible
4903 2009-07-13 Alan McGovern <amcgovern@novell.com>
4906 * uielement.cpp: If the focused element is removed from the
4907 visual tree, it should lose focus.
4909 2009-07-13 Jackson Harper <jackson@ximian.com>
4911 * xaml.cpp: Oops, trying to get the element name from the wrong
4914 2009-07-13 Jackson Harper <jackson@ximian.com>
4916 * xaml.cpp: Handle MoonErrors for AddChild.
4918 2009-07-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
4925 * mms-downloader.cpp: IMediaObject: make the media field
4926 private, and add thread-safe property accessors (using a
4927 mutex and always returning a reffed object). Update all code
4928 which accessed the old accessor to use the new accessor and
4929 unref the media when done.
4931 2009-07-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
4933 * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
4937 * type-generated.cpp: Regenerated.
4939 2009-07-13 Alan McGovern <amcgovern@novell.com>
4941 * control.cpp: A control does not have to be loaded to be
4942 focusable, the visual tree it's attached to has to be
4945 2009-07-13 Alan McGovern <amcgovern@novell.com>
4949 * tabnavigationwalker.h: TabNavigation should activate if the
4950 control does not handle the Tab key
4952 2009-07-13 Alan McGovern <amcgovern@novell.com>
4959 * tabnavigationwalker.h:
4960 * tabnavigationwalker.cpp: Commit the initial implementation
4961 of the TabNavigationWalker. Supports the three tabbing modes
4962 and also forward/backward tabbing. Passes drt 323 except for
4963 a default focusing issue.
4965 2009-07-13 Alan McGovern <amcgovern@novell.com>
4967 * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
4970 2009-07-13 Jérémie Laval <jeremie.laval@gmail.com>
4972 * src/dependencyproperty.cpp: Added const modifier to local variables.
4973 Fix the build with recent gcc.
4975 2009-07-10 Chris Toshok <toshok@ximian.com>
4977 * value.h.in|cpp (Value::Clone): new method, clone the DO if the
4978 value contains one, and otherwise just copy the contents.
4980 * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
4981 this is probably wrong, as the mapping needs to reference cloned
4982 objects, not the same objects that existed in the original
4985 * collection.h|cpp (Collection::CloneCore): clone the collection
4988 * dependencyproperty.h|cpp (resolve_property_path): add a
4989 promoted_values hashtable argument. if the value has already been
4990 promoted, don't do it again. promote the first value we can while
4991 resolving the property path. Don't promote UIElement subclasses
4994 * dependencyobject.h|cpp: add api for cloning (deep copying) for
4995 DependencyObjects. DependencyObject::Clone is the public
4996 interface, with subclasses overriding ::CloneCore if they need to.
4998 * color.cpp (color_to_string): multiply by 255, not 256.
5000 * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
5001 takes a hashtable now so we don't promote values more than
5002 once (doing so causes previous animations to target objects that
5003 are no longer attached anywhere).
5005 * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
5007 2009-07-10 Larry Ewing <lewing@novell.com>
5009 * shape.cpp (MeasureOverride): start working towards fixing
5010 LayoutShapes with some tweaking here.
5011 (Clip): apply the framework clip to elements in the flow too.
5013 2009-07-10 Jeffrey Stedfast <fejj@novell.com>
5015 * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
5017 (TextBoxBase::CursorPrevWord): Same.
5018 (TextBoxBase::KeyPressRight): If there is currently a selection
5019 and the user presses ArrowRight by itself, set the anchor and
5020 cursor at the end of the selection.
5021 (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
5024 2009-07-10 Jeffrey Stedfast <fejj@novell.com>
5026 * textbox.cpp: Always set SelectionStart before
5027 SelectionLength. Fixes a bug when selecting backwards from the end
5030 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
5032 * mediaelement.cpp|h: Store the last seeked-to position so that we never
5033 return a value before that as the current Position. MS DRT #486 uses
5034 a MediaStreamSource which returns frames before the seeked to position
5035 after seeking, and the test checks that MediaElement's Position property
5036 never returns a value before the seeked to position.
5038 2009-07-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
5040 * audio.cpp: When we stop, we need to discard any audio data we might
5043 2009-07-10 Sebastien Pouliot <sebastien at ximian.com>
5045 * runtime.cpp|h, type-generated.cpp: Rename
5046 SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
5048 2009-07-09 Jeffrey Stedfast <fejj@novell.com>
5052 * uri.cpp: Don't use a GData for params, instead use a custom
5053 linked-list. This makes it easier to compare param lists.
5054 (operator==): Compare params.
5056 * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
5059 2009-07-09 Jackson Harper <jackson@ximian.com>
5061 * dependencyobject.cpp|h: Add a little more logic for setting
5062 things to NULL and consolidate in it's own function (STRING can
5063 now be set to NULL).
5065 2009-07-09 Sebastien Pouliot <sebastien at ximian.com>
5067 * downloader.cpp|h: Don't check redirection AFTER downloading the
5068 data. Expose CheckRedirectionPolicy so the plugin can check for
5069 the redirection policy when creating a new stream.
5070 * uri.cpp|h: Add IsAbsolute method and make the return value of
5073 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5075 * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
5076 the root takes care of that. (Playlist): loop over all children and
5077 call StopAsync on them, this way all nested playlists are reset properly
5078 (PlaylistRoot): when done stopping, reopen us.
5080 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5082 * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
5084 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5086 * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
5088 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5090 * mediaelement.cpp: Don't go directly into a Buffering state, when
5091 MediaOpened is emitted we must be either in Paused or Playing state.
5093 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5095 * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
5097 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5099 * mediaelement.cpp|h: Emit CurrentState events asynchronously.
5101 2009-07-08 Larry Ewing <lewing@novell.com>
5103 * frameworkelement.cpp (Arrange): apply min/max values to the
5106 2009-07-08 Jeffrey Stedfast <fejj@novell.com>
5108 * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
5109 at opening the requested system font. First, try using the font
5110 name exactly as the user gave it to us. If that fails, fallback to
5111 canonicalizing it and the style values.
5112 (style_diff): Modify the algorithm used to compare the style
5113 difference between 2 fonts.
5115 2009-07-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
5118 * mediaelement.h: Add validators for Balance and Volume.
5119 This fixes MS DRT #960.
5121 * value.cpp|in: Add support for changing a value.
5124 * dependencyproperty.g.cpp: Regenerated.
5126 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5128 * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
5129 some casing changes with media attributes. PlayNext: fix logic, after
5130 finishing a nested playlist we must play the next entry in our playlist,
5131 not finish right away. If the pipeline raises a MediaError event due to
5132 missing a codec (which is most likely due to an unsupported media file),
5133 don't propagate the error, just play the next entry. Fix a lot of error
5134 code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
5135 as 99.6% of our playlist tests.
5137 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5140 * playlist.h|cpp: Unify playlist detection into one place and add
5141 support for skipping initial whitespace in the file.
5143 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5145 * playlist.cpp|h: String setters: be consistent: take a const string
5146 and dup inside the setter if required, instead of always when calling
5147 the setter, which may leak.
5149 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5151 * playlist.cpp: OnASXStartElement: null initialize to avoid reading
5154 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5156 * playlist.cpp: Cleanup: cleanup properly since we may continue to live
5157 after this method has been called.
5159 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5161 * playlist.cpp: PlaylistEntry: needs to ref/unref the source.
5163 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5166 * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
5167 the parsing fails, propagate the args up in the pipeline.
5169 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5171 * mediaelement.cpp: We need to populate media attributes before raising
5174 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5176 * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
5177 has changed at least a tiny bit.
5179 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5181 * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
5183 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5185 * mediaelement.cpp: Properly set CanPause and CanSeek, and always use
5186 mediaplayer's duration as NaturalDuration.
5188 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5190 * mediaplayer.cpp: All starting points seem to be allowed now, so don't
5191 throw an error event for starting point > duration anymore. Also duration
5192 is always the entire length of the media, regardless of when we start and
5193 how long we're supposed to play.
5195 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5197 * error.cpp|h: Add custom information to ErrorEventArgs, to provide
5198 better Moonlight debugging and in some cases we need more information
5199 than what MS reports.
5201 2009-07-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
5203 * media.cpp: MediaAttributes are case-insensitive.
5205 2009-07-07 Jeffrey Stedfast <fejj@novell.com>
5207 * fontmanager.cpp (canon_font_family_and_style): New convenience
5208 function to canonicalize font family & style info, split out of
5210 (IndexMatchFace): Use the new function.
5212 2009-07-07 Jackson Harper <jackson@ximian.com>
5214 * style.h: Need an internal setter for IsSealed so we can do the
5215 parser seal/unseal hack.
5217 2009-07-07 Sebastien Pouliot <sebastien@ximian.com>
5219 * downloader.cpp|h: Add a new FontPolicy since it differs from
5220 XamlPolicy (which is otherwise *unused*) and fix policies wrt
5221 http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
5222 * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
5225 2009-07-07 Alan McGovern <amcgovern@novell.com>
5227 * namescope.cpp: Once a namescope is locked, don't allow names
5228 to be registered or unregistered. Fixes the case where the
5229 name is changed on a template item.
5231 2009-07-07 Alan McGovern <amcgovern@novell.com>
5235 * template.cpp: When expanding a template, mark all the
5236 children as TemplateItems so they will be able to look up
5237 the correct namescope.
5241 * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
5244 * dependencyobject.h:
5245 * dependencyobject.cpp: Add extra overloads to FindName and
5246 FindNameScope so that we can tell whether we are looking up
5247 a template name or regular name.
5250 * namescope.cpp: Add the ability to lock a namescope so it
5251 can be recognised as a template namescope.
5253 2009-07-07 Jackson Harper <jackson@ximian.com>
5255 * xaml.cpp: Lookup properties on the owner type so attached
5256 properties get looked up properly when setting them via text ie
5257 <Canvas.Left>5</Canvas.Left>
5259 2009-07-06 Jackson Harper <jackson@ximian.com>
5261 * xaml.cpp: Ignored elements should buffer their contents
5262 - Add in Ignored attributes
5264 2009-07-06 Jackson Harper <jackson@ximian.com>
5266 * xaml.cpp: Implement ignorable namespaces.
5268 2009-07-06 Larry Ewing <lewing@novell.com>
5270 * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
5272 2009-07-06 Stephane Delcroix <sdelcroix@novell.com>
5274 * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
5275 so ZoomAbout *= the target's value for zoom, not the current one.
5277 2009-07-06 Jeffrey Stedfast <fejj@novell.com>
5281 * fonts.cpp (LoadPortableUserInterface): Return the index of the
5283 (TextFont::Load): If PUI is our first family, keep track of which
5284 face the Lucida face is and use that as our master. Otherwise use
5286 (TextFont::UpdateFaceExtents): Use the 'master' face to get the
5287 extents from, rather than the first face.
5289 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
5291 * playlist.cpp: PlayNext: play even if previous entry didn't fail.
5292 Fixes our test #136.
5294 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
5296 * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
5297 playlist format so we'll never get it, it'll be parsed on the
5300 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
5302 * mediaelement.cpp: Fix warning.
5304 2009-07-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
5308 2009-07-03 Larry Ewing <lewing@novell.com>
5310 * textblock.cpp (ArrangeOverride): try to get textblock height
5311 stretching closer. See 295 and 2020 for examples.
5313 2009-07-03 Alan McGovern <amcgovern@novell.com>
5315 * runtime.cpp: We don't need to change these actually.
5317 2009-07-03 Alan McGovern <amcgovern@novell.com>
5319 * runtime.cpp: When inside the if statement, we know that
5320 toplevel and element are the same, so use 'element' instead
5321 of 'toplevel' in case the toplevel is removed during the
5322 loaded/resized event. Fixes memorabilia.
5324 2009-07-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
5326 * mms-downloader.cpp: ProcessResponseHeaderCallback:
5327 set current deployment.
5329 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5331 * pipeline-asf.cpp|h:
5332 * mms-downloader.cpp|h: If downloading the mms url
5333 doesn't succeed, raise an error. Fixes MS DRT #222
5336 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5339 * mediaelement.cpp: When playing an mms stream, SL sets
5340 DownloadProgress to 1.0 after downloading the header.
5341 Makes MS DRT #222 reach a bit further.
5343 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5345 * pipeline.cpp: Fix printf.
5347 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5349 * mediaelement.cpp: Handle DownloadProgressChanged events
5352 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5354 * downloader.cpp|h: Add another downloader API
5355 method, this time to get the DownloaderResponse.
5357 * cbinding.cpp|h: Regenerated.
5359 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
5361 * multiscaleimage.h: instruct the generator to do more for us.
5363 2009-07-02 Chris Toshok <toshok@ximian.com>
5365 * propertypath.h: fix operator== and add operator!=.
5367 * validators.h|cpp: add StoryboardTargetPropertyValidator.
5369 * dependencyproperty.g.cpp: regen.
5371 * animation.h (class Storyboard): use a special validator for
5372 TargetPropertyProperty such that it follows the semantics laid out
5373 in StoryboardTest.SetTargetPropertyTwice*.
5375 2009-07-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
5377 * mediaelement.cpp: Protect against emitting BufferingProgressChanged
5378 when the actual value hasn't changed.
5380 * pipeline.cpp: FillBuffers: don't report any buffering progress
5381 if we don't have any media streams.
5383 2009-07-02 Jeffrey Stedfast <fejj@novell.com>
5385 * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
5386 argument which is used for loading the preferred default font (by
5387 language) first, before the other fallback fonts.
5388 (TextFont::Load): Pass in the 'lang' argument.
5389 (TextFontDescription): Added methods to get/set a Language
5392 * textblock.cpp (Inline::UpdateFontDescription): Set the language
5393 on the TextFontDescription.
5394 (TextBlock::OnPropertyChanged): If the
5395 FrameworkElement::LanguageProperty changes, reload the fonts and
5398 2009-07-02 Jackson Harper <jackson@ximian.com>
5400 * xaml.cpp: Fix error code so it gets propogated up when
5401 validating templates.
5403 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5405 * runtime.cpp: Fix printf.
5407 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
5409 * multiscaleimage.h|cpp: handle the various motion finished separately
5410 and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
5411 animations are completed.
5413 2009-07-02 Stephane Delcroix <sdelcroix@novell.com>
5415 * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
5416 use a custom property provider so getting vp origin or width returns
5417 the current value, while setting them sets the animation's targets.
5419 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5421 * pipeline.cpp: FillBuffers: Only take into
5422 account media streams when trying to determine
5423 if all streams have reached its end. Fixes our test
5426 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5428 * mediaelement.cpp: Reinvalidate everything when
5429 clearing a source. Fixes MS DRT #45 (after setting
5430 the source to an empty string, the media element
5431 shouldn't render anything anymore).
5433 2009-07-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
5435 * pipeline.cpp: FillBuffers: Take into account that
5436 decoders may call SetOutputEnded once SetInputEnded
5437 is called, and update the number of ended streams
5438 immediately. Fixes our test #111.
5440 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5443 * playlist.cpp: Make debug output more descriptive.
5445 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5447 * pipeline-asf.cpp|h: Reimplement support for mms seeking.
5449 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5451 * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
5454 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5456 * mp3.cpp: Fix parsing of xing vbr headers causing wrong
5457 duration to get calculated of the file.
5459 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5461 * mp3.cpp: FindMpegHeader: fix return value: the offset of
5462 the header goes into the result output variable and we return
5463 success instead of returning a bogus error value.
5465 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5467 * pipeline.cpp: If we couldn't select a demuxer because of
5468 not having enough data yet, try again later.
5470 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5472 * mediaelement.cpp: If Source (or UriSource) is either null
5473 or an empty string, we're only supposed to clean up, not
5474 trying to play the null/empty string.
5476 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5478 * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
5479 to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
5480 all streams have finished their output, set buffering progress
5483 * playlist.cpp: Properly forward progress event args.
5485 * mediaelement.cpp: Set buffering progress when it changes,
5486 and raise BufferingProgressChanged. Don't try to autoplay
5487 when buffering progress is < 1.0, wait until it reaches 1.0.
5489 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5491 * audio-pulse.cpp: Fix warning.
5493 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5495 * audio-alsa.cpp: WriteMmap: If we try to write with an audio
5496 source which has ended, call Underflowed, since that's what's
5499 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5501 * audio-alsa.cpp: If hw setup failed, dump current hw parameters
5502 to stdout (if debug mode is enabled).
5504 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5506 * mms-downloader.cpp: Do better initialization and cleanup of
5507 downloader and state variables to prevent issues when seeking.
5509 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5511 * mms-downloader.cpp: Write: Don't use math when not necessary to
5512 avoid overflows, and if we end up freeing the buffer set the size
5515 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5517 * mms-downloader.cpp: Use thread-safe tick call from media thread.
5519 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5521 * mms-downloader.cpp: Don't leak the uri.
5523 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5525 * downloader.h: Make OpenInitialize public so that the
5526 MmsDownloader can reinitialize it when sending new requests.
5528 2009-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
5530 * audio.cpp: Play 24 bit audio unconditionally.
5532 2009-07-01 Chris Toshok <toshok@ximian.com>
5534 * Makefile.am (INCLUDES): turns out we need to include ../plugin
5535 here to deal with type-generated/type.h/etc.
5537 * type.h.in: fix annoying indent problem.
5539 * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
5540 value.h, type.h: regen
5542 2009-07-01 Larry Ewing <lewing@novell.com>
5544 * textblock.cpp (ArrangeOverride): take alignment into account
5545 when computing our size.
5547 2009-07-01 Jeffrey Stedfast <fejj@novell.com>
5549 * textblock.cpp (ArrangeOverride): Set the available width on the
5550 layout so that it can properly align the text for center/right
5553 2009-07-01 Jackson Harper <jackson@ximian.com>
5555 * xaml.cpp: Need to set the binding source when we are validating
5558 2009-07-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
5560 * mediaelement.cpp: SetMarkerTimeout: when unreffing self
5561 use a delayed timeout, since we can be the last ref, this
5562 ensures the stack is unwound first.
5564 2009-06-30 Larry Ewing <lewing@novell.com>
5566 * border.cpp (Render): get CornerRound rendering closer to the sl
5569 2009-06-30 Chris Toshok <toshok@ximian.com>
5571 * clock.h|cpp: Seeking doesn't start the clock. And we have to
5572 support UpdateFromParentTime even while paused, since we can seek
5573 while paused. Fixes 392 (along with actually fixing the test..)
5575 2009-06-30 Chris Toshok <toshok@ximian.com>
5577 * clock.h|cpp: fix Seek and SeekAlignedToLastTick. fixed DRT
5580 2009-06-30 Jeffrey Stedfast <fejj@novell.com>
5582 * fontmanager.cpp (style_diff): Improved a bit so that we never
5583 return G_MAXINT if any font by the same name is found, no matter
5584 what style differences there are.
5586 2009-06-30 Jackson Harper <jackson@ximian.com>
5588 * deepzoomimagetilesource.cpp: Parsers need to be freed.
5590 2009-06-30 Alan McGovern <amcgovern@novell.com>
5592 * popup.cpp: According to the docs, a popup which is GC'ed
5593 should be closed. Ensure that this happens.
5595 2009-06-30 Alan McGovern <amcgovern@novell.com>
5597 * popup.cpp: If the child is set after the popup is opened,
5598 make sure it is shown. Ensure that we now only emit the
5599 Opened/Closed events when the popup IsOpen state changes.
5600 Allows 503 to progress further.
5602 2009-06-30 Jackson Harper <jackson@ximian.com>
5604 * xaml.cpp|h: Add a flag for template validation
5605 - Implement template validation and propogate errors up
5606 * cbinding.cpp: regen
5608 2009-06-30 Stephane Delcroix <sdelcroix@novell.com>
5610 * multiscaleimage.cpp: drop a debug block that was misinterpreted by
5611 the preprocessor. fir x drt 265.
5613 2009-06-30 Stephane Delcroix <sdelcroix@novell.com>
5615 * multiscaleimage.cpp: download the first num_dl (6) levels while the
5618 2009-06-29 Alan McGovern <amcgovern@novell.com>
5620 * control.cpp: Unregress drt 911, EnabledChanged events fire
5621 at the correct time again.
5623 2009-06-29 Jeffrey Stedfast <fejj@novell.com>
5625 * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
5626 of the GlyphMetrics fields.
5628 * layout.cpp: Updated to keep track of the previous GlyphInfo
5629 rather than the previous GlyphInfo's index.
5631 * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
5632 (TextFont::Kerning): Modified to take GlyphInfo arguments rather
5633 than face indexes since they are worthless w/o knowing which font
5634 face the indexes of each are for.
5636 2009-06-29 Alan McGovern <amcgovern@novell.com>
5638 * control.cpp: Propagate the IsEnabled changes down the visual
5639 tree in OnPropertyChanged, not in SetValue.
5641 2009-06-29 Jackson Harper <jackson@ximian.com>
5643 * xaml.cpp: Store enums as INTs.
5645 2009-06-28 Chris Toshok <toshok@ximian.com>
5647 * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
5648 Clock::Active) to (state != Clock::Stopped) to tell whether or not
5649 we've started (since we can start directly in the filling state.)
5651 Also remove all the idle_hint stuff, since it's no longer used.
5653 * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
5654 why this method is needed at all, but at the very lease we need to
5655 stop calling ClockGroup::UpdateFromParentTime, since this method
5656 very nearly duplicates that one (and we're therefore looping over
5657 the child clocks twice).
5659 2009-06-28 Chris Toshok <toshok@ximian.com>
5661 * color.cpp (named_colors): update these so that text-colors.xaml
5664 2009-06-28 Larry Ewing <lewing@novell.com>
5666 * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
5668 2009-06-27 Jeffrey Stedfast <fejj@novell.com>
5670 * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
5671 changes, the layout *always* gets dirty. We also always need to
5674 * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
5675 calculate/update the font extents. Only use the extents of the
5676 first face - this fixes a bunch of MS DRTs.
5677 (TextFont::.ctor): Call UpdateFaceExtents().
5678 (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
5679 a number of regressions (like MS DRT #43).
5681 2009-06-27 Chris Toshok <toshok@ximian.com>
5683 * grid.cpp (Grid::OnCollectionItemChanged): don't
5684 InvalidateMeasure() when the grid's actualwidth or row's
5685 actualheight is set. this gets us into an infinite loop.
5687 2009-06-26 Chris Toshok <toshok@ximian.com>
5689 * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
5690 (initialize_enums): and add it to the hashtable.
5692 * grid.h|cpp: make ColumnDefinition.ActualWidth and
5693 RowDefinition.ActualHeight dependencyproperties to make the plugin
5694 binding easier. get rid of each class's "actual" field.
5696 2009-06-25 Chris Toshok <toshok@ximian.com>
5698 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5699 object we're looking the event up on, and a flag as to whether or
5700 not to allow desktop-specific events. and just look up the event
5701 from the type system instead of having the hardcoded list.
5703 2009-06-25 Chris Toshok <toshok@ximian.com>
5705 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5706 object we're looking the event up on, and a flag as to whether or
5707 not to allow desktop-specific events. and just look up the event
5708 from the type system instead of having the hardcoded list.
5710 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
5712 * fonts.cpp (LoadPortableUserInterface): Only set that we've
5713 loaded PUI, not each individual fallback face. The other faces may
5714 match user-specified faces, but there may also be a font source
5715 that it is loading them from (which may differ from the locally
5718 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
5720 * runtime.cpp: Don't need to call font_init() or font_shutdown()
5723 * deployment.cpp: Create a new FontManager per Deployment and
5724 provide an access method to get at it.
5726 * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
5729 * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
5730 inheritance, these no longer exist.
5732 * fonts.cpp|h: New source files with the higher-level abstraction
5733 for font loading, glyph manipulation, etc.
5735 * fontmanager.cpp|h: New source files containing a FontManager
5736 class which handles caching of font faces and indexing of font
5737 resources. Serves as platform-dependent font loading layer.
5739 * font.cpp|h: Removed.
5741 2009-06-26 Jeffrey Stedfast <fejj@novell.com>
5743 * uri.cpp (ToString): Respct the UriHideQuery flag.
5745 2009-06-26 Larry Ewing <lewing@novell.com>
5747 * border.h: change the default value.
5749 * cornerradius.h: reorder the bottom* arguments.
5751 2009-06-26 Alan McGovern <amcgovern@novell.com>
5754 * popup.cpp: Handle popup hittesting when its closed in a way
5757 2009-06-26 Alan McGovern <amcgovern@novell.com>
5759 * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
5760 IsOpen state so that hittesting works correctly.
5762 2009-06-25 Chris Toshok <toshok@ximian.com>
5764 * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5765 object we're looking the event up on, and a flag as to whether or
5766 not to allow desktop-specific events. and just look up the event
5767 from the type system instead of having the hardcoded list.
5769 2009-06-25 Larry Ewing <lewing@novell.com>
5771 * grid.cpp, grid.h (PostRender): move the grid lines from Render to
5772 PostRender so that the lines are on top of the children (which
5773 appears to be the sl behavior). Fixes at least 317 and 446.
5775 2009-06-25 Sebastien Pouliot <sebastien@ximian.com>
5777 * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
5778 Fix two unnumbered DRT tests.
5780 2009-06-25 Chris Toshok <toshok@ximian.com>
5782 * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
5783 generate ArgumentExceptions here if start/length are out of range.
5784 This could, in the future, be entirely handled by the setter
5785 methods but for now we don't pass a MoonError to them.
5787 * xaml.h|cpp (xaml_set_property_from_str): this method takes an
5788 additional MoonError parameter so we can communicate back if there
5789 was a problem. Also, call SetValueWithError.
5791 * cbinding.h|cpp: regen.
5793 2009-06-25 Chris Toshok <toshok@ximian.com>
5795 * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
5796 can tell in AddedToCollection and RemovedFromCollection if we got
5797 there from using ResourceDictionary's string-based api or
5798 Collection's object-based api. Take care of adding/removing the
5799 key for the object in those methods if we didn't come from the RD
5802 * type.cpp (Type): quiet valgrind down by using "delete []"
5803 instead of "delete" to free up the interfaces array.
5805 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5807 * mediaplayer.cpp: Improve debug output.
5809 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5811 * pipeline.h: Added a ProgressEventArgs class.
5815 * type-generated.cpp: Regenerated.
5817 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5819 * audio.cpp|h: Add support for having different input (from the
5820 codec) and output (to the device) formats. This is required for
5821 pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
5822 bit. Also add support for multi channel audio.
5825 * audio-pulse.cpp: Add support for multi channel and 24 bit audio
5826 and update according to audio API changes.
5828 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5830 * audio-alsa.cpp: Fix debug output by not duplicating declarations.
5832 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5834 * audio.cpp|h: Add support for dumping raw audio data to a file.
5836 2009-06-25 Alan McGovern <amcgovern@novell.com>
5838 * dependencyproperty.g.cpp: Regen
5840 2009-06-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
5844 * file-downloader.h:
5845 * internal-downloader.h: Add a SetFilename abstract method to
5846 InternalDownloader, provide implementations in FileDownloader
5847 and MmsDownloader and call the abstract method in the downloader
5848 instead of blindly casting an InternalDownloader to a FileDownloader
5849 when it might be an MmsDownloader.
5851 2009-06-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
5853 * pipeline.cpp|h: AudioStream: add possibility of having different
5854 input and output formats.
5856 * cbinding.cpp|h: Regenerated.
5858 2009-06-24 Chris Toshok <toshok@ximian.com>
5860 * xaml.cpp (matrix_from_str): handle "Identity" here.
5861 (value_from_str_with_parser): you can also create TransformGroups
5862 directly using the matrix syntax. Also, add support for parsing
5863 FontWeight/FontStyle/FontWeight structs here since we can't just
5864 rely on the enum_* stuff alone to do it.
5866 * value.h.in, value.cpp: add support for
5867 FontWeight/FontStyle/FontWeight structs.
5869 * textblock.cpp (Inline::UpdateFontDescription): track the
5871 (TextBlock::Layout): same.
5873 * textbox.cpp (TextBoxBase::Initialize): same.
5874 (TextBoxBase::OnPropertyChanged): same.
5876 * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
5877 structs now for these.
5879 * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
5880 struct types for properties instead of our internal enums.
5882 * Makefile.am (libmoon_include_headers): add fontstretch.h
5883 fontstyle.h, and fontweight.h
5885 * type-generated.cpp: regen.
5887 * cbinding.h|cppp: regen.
5889 * dependencyproperty.g.cpp: regen.
5893 2009-06-24 Larry Ewing <lewing@novell.com>
5895 * panel.cpp (Render): add layout clipping to panel rendering.
5897 2009-06-24 Larry Ewing <lewing@novell.com>
5899 * grid.h: stop drawing the gridlines by default. See comment for
5902 2009-06-24 Alan McGovern <amcgovern@novell.com>
5905 * runtime.cpp: Focus changed events should be emitted at the
5906 start and end of any user initiated event.
5907 can_raise_focus_changed is no longer necessary.
5909 2009-06-23 Larry Ewing <lewing@novell.com>
5911 * frameworkelement.cpp (UpdateLayout): reorder the way we process
5912 the lyout queues. Fixes ms 409.
5914 2009-06-23 Jackson Harper <jackson@ximian.com>
5916 * xaml.cpp: Handle empty buffers
5918 2009-06-23 Jackson Harper <jackson@ximian.com>
5920 * xaml.cpp: ContentControl can not have string content set this
5921 way, if the content object is a string it needs to be set with
5924 2009-06-23 Jackson Harper <jackson@ximian.com>
5926 * xaml.cpp: Another stab at not skipping empty attributes. Fixed
5927 all the unit test regression this caused last night.
5929 2009-06-23 Alan McGovern <amcgovern@novell.com>
5931 * grid.cpp: A dash length of 4 seems to be more correct.
5933 2009-06-23 Alan McGovern <amcgovern@novell.com>
5936 * grid.cpp: Implement Grid.ShowGridlines
5938 2009-06-22 Jackson Harper <jackson@ximian.com>
5940 * xaml.cpp: Pass the full prop name to managed
5941 - If managed fails to set the property, delete it so unmanaged can
5944 2009-06-22 Larry Ewing <lewing@novell.com>
5946 * provider.cpp: make UIElement::UseLayoutRounding inherited, this
5947 doesn't make it pass 2019 but it does a lot more.
5949 * shape.cpp: mirror the silverlight logic for canvas children with
5950 only one of w/h set. Fixes ms test 23.
5952 2009-06-18 Larry Ewing <lewing@novell.com>
5954 * shape.cpp: try to get the shape flags right once again trap
5955 explicit small values properly. Add Clipping logic to clip shapes
5956 to the fe values when explicitly set.
5958 * frameworkelement.cpp: look at stretch even when we have no
5961 2009-06-19 Jackson Harper <jackson@ximian.com>
5963 * xaml.cpp|h: We now have a managed version of AddChild so remove
5964 all the AddToContainer junk and use the managed AddChild instead.
5965 - Add MoonError to all the callbacks. Not handling the errors yet,
5966 but at least they are there now.
5968 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5970 * xaml.cpp: Add comment about absolute/relative paths
5973 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5975 * multiscaleimage.cpp: When an image has been opened,
5976 invalidate everything.
5978 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5980 * multiscaleimage.cpp|h: Emit MotionFinished after
5981 SetViewportWidth/SetViewportOrigin has been called.
5983 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5985 * multiscaleimage.cpp|h:
5986 * deepzoomimagetilesource.cpp|h: Raise error events.
5988 2009-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
5990 * multiscaleimage.cpp|h: Add support for methods exposed to JS.
5992 * cbinding.h: Regenerated.
5994 2009-06-18 Sebastien Pouliot <sebastien@ximian.com>
5996 * textblock.cpp: Avoid crash when using FontSource
5998 2009-06-18 Alan McGovern <amcgovern@novell.com>
6002 * control.cpp: When the visual parent changes on a Control, it
6003 needs to search up the visual tree to find out the Enabled
6004 state of the first Control it finds. When raising the
6005 IsEnabledChanged events, the control must emit its event
6006 before controls in its subtree emit their events. Fixes drt
6009 2009-06-17 Jeffrey Stedfast <fejj@novell.com>
6011 * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
6012 for single-line entry controls (e.g. PasswordBox), don't allow
6015 2009-06-17 Alan McGovern <amcgovern@novell.com>
6017 * uielement.cpp: Changing UIElement::Visibility should also
6018 invalidate the parents measure. This allows DRT 2050 to
6019 complete without timing out.
6021 2009-06-17 Alan McGovern <amcgovern@novell.com>
6023 * uielement.cpp: Changing UIElement.Visibility should result
6024 in the measure being invalidated.
6026 2009-06-17 Alan McGovern <amcgovern@novell.com>
6028 * font.cpp: When the font cache is destroyed, set it to NULL
6029 so that if a Font is destroyed later it does not try to
6031 Null check the the FontFace cache before using it.
6032 If the FT_Face stream is null already, don't try to destroy
6035 2009-06-17 Alan McGovern <amcgovern@novell.com>
6037 * runtime.cpp: A subset of keypresses are allowed to bubble up
6038 when in fullscreen mode. Fixes drt 175.
6040 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
6042 * uri.cpp: Add a null check to prevent a crash.
6044 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
6046 * uri.cpp: Flag a lot more characters as url unsafe, and
6047 fix printf specifiers for url encoded characters to not
6048 include extra 'ff' sequences for every encoded character.
6050 This fixes parts of MS DRT #641.
6052 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
6054 * downloader.cpp|h: Add an Open overload which takes an Uri
6055 instead of a string.
6057 * deepzoomimagetilesource.cpp:
6058 * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
6060 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
6062 * playlist.cpp: When we stop, emit the StopEvent.
6064 * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
6066 2009-06-16 Chris Toshok <toshok@ximian.com>
6068 * xaml.cpp (XamlElementInfoStaticResource,
6069 XamlElementInstanceStaticResource): remove these classes.
6070 (begin_buffering_element_names): remove this unused variable.
6071 (XamlParserInfo::LookupNamedResource): remove.
6072 (DefaultNamespace::FindElement): remove the
6073 XamlElementInfoStaticResource case, and just let the managed
6074 loader create the StaticResource element itself.
6075 (is_static_resource_element): remove.
6076 (XamlElementInstanceNative::SetProperty): defer to the loader if
6077 either the property or the value RequiresManagedSet.
6078 (dependency_object_set_property): defer to the loader if the value
6080 (dependency_object_set_attributes): remove all processing of
6081 markup extensions from unmanaged code.
6082 (xaml_markup_parse_argument): remove.
6083 (xaml_markup_extension_type): remove.
6084 (handle_markup_in_managed): remove.
6085 (handle_xaml_markup_extension): remove.
6087 * panel.h|cpp (Panel::Panel): just set our subtree object here.
6088 (Panel::GetSubtreeObject): remove.
6090 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6091 don't notify listeners when creating an auto-created value.
6093 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
6094 only call the property's change callback if we're notifying
6097 2009-06-17 Andreia Gaita <avidigal@novell.com>
6099 * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
6101 2009-06-17 Andreia Gaita <avidigal@novell.com>
6103 * xaml.cpp: fix typo
6105 2009-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
6107 * pipeline.cpp: Remove spurious printfs.
6109 2009-06-16 Andreia Gaita <avidigal@novell.com>
6111 * deployment.[h|cpp]: Try to dispose types only if there are no
6112 objects pending destruction. If there are, dispose only after
6113 they are all cleared (on DrainUnrefs). This makes sure no properties
6114 are destroyed while objects are still pending.
6115 Added isDead flag, used when doing object tracking to protect against
6116 trying to access type fields when the types have been destroyed
6117 already (when doing ref logging and the final leak report).
6118 Type destruction is slightly delayed when doing object tracking
6119 to allow for the report (otherwise we wouldn't have any type names
6120 on it, and that would be sad)
6122 * type.cpp: fake-clear the properties list by setting it's count to 0
6123 so access by id fails (in case someone wants to access the property
6124 while we're disposing everything).
6125 Delete all the registered types and kill the properties list when
6126 destroying. By this point all properties and objects should be
6128 * type.h.in: added dispose flag.
6129 * type.h: regenerated
6131 2009-06-16 Andreia Gaita <avidigal@novell.com>
6133 * uielement.cpp: release all refs on dispose
6135 2009-06-16 Andreia Gaita <avidigal@novell.com>
6137 * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
6139 2009-06-16 Jeffrey Stedfast <fejj@novell.com>
6141 * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
6143 2009-06-16 Larry Ewing <lewing@novell.com>
6145 * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
6146 when properties change in preparation for fixing the autocreated
6147 property notification stuff
6149 2009-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
6151 * multiscaleimage.cpp: Add a call to print_stack_trace, looks
6152 like abort () doesn't cause a stack trace.
6154 2009-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
6156 * mediaplayer.cpp: Remove circular dependency between MediaPlayer
6157 and MediaElement, clear out the element in Dispose and add a null
6158 check before accessing the element. Fixes crash in MS DRT #238.
6160 2009-06-15 Andreia Gaita <avidigal@novell.com>
6162 * frameworkelement.cpp: delete UIElement nodes when we're done
6165 2009-06-15 Jeffrey Stedfast <fejj@novell.com>
6167 * textblock.cpp (SetTextInternal): Get rid of some duplicated
6170 2009-06-15 Alan McGovern <amcgovern@novell.com>
6173 * frameworkelement.h:
6174 * frameworkelement.cpp: Give an initial implementation of
6175 FindElementInHostCoordinates (UIElement, Rect) which treats
6176 the rect as a series of points and checks each one until a
6177 hit is found. Allows drt 280 to
6179 2009-06-15 Jeffrey Stedfast <fejj@novell.com>
6181 * dependencyobject.cpp (Initialize): Initialize is_hydrated to
6184 2009-06-15 Andreia Gaita <avidigal@novell.com>
6186 * type.[h|cpp]: Dispose method added, to help separate between clearing
6187 all the DPs and actually deleting the types. For now, just clears the
6188 DPs and doesn't touch the type list.
6189 * deployment.cpp: (Dispose) types are disposed here, for now.
6191 2009-06-15 Andreia Gaita <avidigal@novell.com>
6193 * dependencyproperty.g.cpp: regenerated
6195 2009-06-15 Jackson Harper <jackson@ximian.com>
6197 * xaml.cpp: Reorder errors.
6199 2009-06-15 Andreia Gaita <avidigal@novell.com>
6201 * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
6202 inside SetParts, and since we don't store it anywhere else, drop a
6205 2009-06-15 Andreia Gaita <avidigal@novell.com>
6207 * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
6208 it removes itself from the property list and gets deleted as soon as
6209 possible, otherwise it will not only leak, but blow up once we start
6211 Floating status is gone.
6213 2009-06-15 Andreia Gaita <avidigal@novell.com>
6215 * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
6216 and some extra debugging output for refcounting.
6219 2009-06-15 Alan McGovern <amcgovern@novell.com>
6221 * frameworkelement.cpp: Objects can be hit as long as their
6222 height as greater than zero and the point is in the fill or
6225 2009-06-15 Alan McGovern <amcgovern@novell.com>
6227 * frameworkelement.cpp: Back that change out as it causes some
6228 regressions in the moon-unit tests.
6230 2009-06-15 Alan McGovern <amcgovern@novell.com>
6232 * frameworkelement.cpp: We can hit an element in both stroke
6235 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
6237 * playlist.cpp|h: When a media reports that it has been opened
6238 successfully, check if we're the current element, and if not,
6239 don't to anything more until we are the current element. This
6240 fixes an issue with server side playlists where they would
6241 only play the first entry.
6243 * pipeline.cpp|h: Move code out of header.
6245 * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
6248 2009-06-15 Alan McGovern <amcgovern@novell.com>
6250 * frameworkelement.cpp: We're hittesting the clip, we use
6251 user-space coordinates, so apply the identity matrix to get
6254 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
6256 * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
6258 * cbinding.cpp|h: Regenerated.
6260 2009-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
6262 * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
6263 to the enum->str conversion table.
6265 2009-06-15 Alan McGovern <amcgovern@novell.com>
6267 * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
6268 it's attached to otherwise it can access the element after
6269 the element has been destroyed. Stops 238 crashing.
6271 2009-06-14 Andreia Gaita <avidigal@novell.com>
6273 * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since
6274 there are certain refcounted objects that aren't child classes of
6276 Wrap null objects but don't try to unref them.
6279 2009-06-14 Andreia Gaita <avidigal@novell.com>
6281 * debug.[h|cpp]: add max frame arg for finer control when getting
6284 2009-06-12 Jackson Harper <jackson@ximian.com>
6286 * xaml.cpp|h: import_xmlns now validates the namespace so we can
6287 raise an error if it is invalid.
6289 2009-06-12 Jackson Harper <jackson@ximian.com>
6291 * xaml.cpp: Don't allow dtds.
6293 2009-06-12 Jackson Harper <jackson@ximian.com>
6295 * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
6297 2009-06-12 Jackson Harper <jackson@ximian.com>
6299 * xaml.cpp: Use the value attribute parsing for enum types, this
6300 allows them to have x:Key and x:Name attributes.
6302 2009-06-12 Sebastien Pouliot <sebastien@ximian.com>
6304 * dependencyproperty.g.cpp: Regenerated
6305 * deployment.h: Update ExternalCallersFromCrossDomainProperty
6306 generator-related properties and add unmanaged accessors
6307 * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
6308 dropped after SL2 beta2
6309 * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
6310 * validators.cpp|h: Add new CrossDomainValidator that ensure we
6311 can set only once Deployment::ExternalCallersFromCrossDomainProperty
6313 2009-06-11 Jackson Harper <jackson@ximian.com>
6315 * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
6316 - Don't try to set managed properties in
6317 dependency_object_add_child.
6318 - Make sure we only create managed property elements for managed
6319 items, even if they are DOBs, otherwise UserControl.Resources gets
6320 a native property info.
6322 2009-06-11 Alan McGovern <amcgovern@novell.com>
6325 * runtime.cpp: The uielements involved in GotFocus/LostFocus
6326 events need to be stored in a queue so that focusing
6327 multiple elements in one tick works correctly.
6329 2009-06-11 Alan McGovern <amcgovern@novell.com>
6333 * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
6335 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
6337 * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
6339 * security.c: Fix signed/unsigned mismatch warning.
6341 * error.cpp: Fix warning about not initialize in correct order.
6343 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
6345 * pipeline.cpp: Fix warning/typo in printf.
6347 2009-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
6349 * pipeline.cpp: MarkerStream: if there is no callback, store
6350 the markers in a list instead of just dropping them. Fixes an
6351 issue with our #150 where we'd lose markers since the stream
6352 had processed them before getting a callback.
6354 * mediaelement.cpp: Check if a marker stream has stored markers
6355 (which would have been added before the calback was set).
6357 2009-06-10 Larry Ewing <lewing@novell.com>
6359 * frameworkelement.cpp (Arrange): measure containers if they
6360 haven't been at least for now.
6362 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6364 * mediaelement.cpp: When we get a stream as the source, set download
6365 progress immediately to 1.0. Also emit DownloadProgressChanged just
6366 after opening the file (to ensure that we emit DownloadProgressChanged
6367 at least once). This makes MS DRT #420 not time out.
6369 2009-06-10 Larry Ewing <lewing@novell.com>
6371 * frameworkelement.cpp (UpdateLayout): if we find a unloaded
6372 element while walking the tree emit loaded on it now.
6374 2009-06-10 Larry Ewing <lewing@novell.com>
6376 * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
6377 place it was supposed to be emitted.
6379 2009-06-10 Jeffrey Stedfast <fejj@novell.com>
6381 * layout.cpp (Layout): Don't apply font height to the line unless
6382 text has been rendered on that line using that font.
6384 2009-06-10 Jackson Harper <jackson@ximian.com>
6386 * xaml.cpp|h: Add another param to LookupObject to specify whether
6387 we are looking up a property. We can't rely on the '.' being in
6388 the name because x:Class names can have namespaces.
6389 - Force USERCONTROL to be looked up in managed so we can
6392 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6394 * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
6395 parent entries/playlists too. Also propagate the BufferUnderflow
6398 * pipeline.cpp: Change logic when filling the buffer to request
6399 a frame from the least-buffered stream. This solves an issue with
6400 live streams, we might end up playing audio only when the video
6401 buffer was empty and the audio buffer never full.
6403 * mediaplayer.cpp|h: When determining duration of an entry, check
6404 the entry's parents too for duration. We also need to set
6405 first_live_pts when rendering. This makes MS DRT #129
6406 not time out. Add a BufferUnderflow to inform listeners of any
6409 * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
6410 playback and update states accordingly. Remove UpdateProgress,
6413 * type-generated.cpp: Regenerated.
6415 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6417 * mediaplayer.cpp: use the correct max value for guint64.
6419 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6421 * mediaplayer.cpp|h: Make flags a thread-safe variable, since
6422 we might write to it from an audio thread.
6424 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6426 * playlist.cpp: When checking if an entry has duration, check
6427 the right entry. Fixes a possible crash.
6429 2009-06-10 Alan McGovern <amcgovern@novell.com>
6431 * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
6432 event too. Allows drt 293 to complete.
6434 2009-06-10 Alan McGovern <amcgovern@novell.com>
6436 * uri.cpp: Uris starting with "\\" need to be recognised as
6439 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6441 * pipeline-asf.cpp: Remove dead code.
6443 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6445 * runtime.cpp: g_warning -> printf to ease breaking on
6448 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6450 * dependencyobject.h: Fix IdMask.
6452 2009-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
6454 * pipeline.h|cpp: Rework some of the buffer filling algorithm:
6455 we now never have more than one frame pending (to know which
6456 stream a response comes from - if frame parameter to
6457 ReportGetFrameCompleted is null, we need to mark the corresponding
6458 stream as ended. Also split the 'stream ended' concept in two:
6459 input ended (the demuxer won't give us more data) and output
6460 ended (the decoder won't give us more data). This fixed
6464 * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
6465 need to try again later.
6467 * mediaelement.cpp: CheckMarkers: subtract one to not include
6468 both ends of the range, if the marker matches exactly the end
6469 of a range it will get emitted twice otherwise.
6472 * audio.cpp: Updated according to IMediaStream changes.
6474 2009-06-09 Jeffrey Stedfast <fejj@novell.com>
6476 * value.cpp (operator==): Fix a crash if comparing a null
6479 * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
6480 the control is loaded.
6481 (EmitTextChangedAsync): Same.
6483 2009-06-09 Alan McGovern <amcgovern@novell.com>
6485 * runtime.cpp: The first mouse click will always Focus on the
6486 'default' control. After that we follow the normal focusing
6487 rules and focus on the first eligible control which the
6488 mouse has clicked on.
6490 2009-06-08 Jackson Harper <jackson@ximian.com>
6492 * xaml.cpp: Add TimeSpan to the primitive types.
6494 2009-06-08 Chris Toshok <toshok@ximian.com>
6496 * runtime.h (class Surface): add IsZombie.
6498 2009-06-08 Jackson Harper <jackson@ximian.com>
6500 * error.cpp|h: Add method and fields for line/char positions.
6501 * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
6502 them to get propogated to managed and fixes some of the unit tests.
6504 2009-06-08 Jackson Harper <jackson@ximian.com>
6506 * xaml.cpp|h: Pass the property xmlns and the element xmlns into
6507 managed when setting properties.
6509 2009-06-08 Alan McGovern <amcgovern@novell.com>
6511 * runtime.cpp: Un-regress drt 783. We need to raise our cached
6512 focus changed event, then process the focus change itself,
6513 then raise the events for the new change.
6515 2009-06-08 Alan McGovern <amcgovern@novell.com>
6518 * runtime.cpp: If Control.Focus is called from inside a
6519 GotFocus handler, the focus change occurs immediately and
6520 the new GotFocus event is raised as soon as the current
6521 handler is finished.
6523 2009-06-08 Jackson Harper <jackson@ximian.com>
6525 * xaml.cpp: Bail out after we hit the first attribute parsing
6528 2009-06-08 Jackson Harper <jackson@ximian.com>
6530 * xaml.cpp: We need to convert path geometry strings from managed.
6532 2009-06-08 Jackson Harper <jackson@ximian.com>
6534 * xaml.cpp: Little more cleanup now that we don't have to reparse
6535 attributes for x:Class.
6537 2009-06-05 Chris Toshok <toshok@ximian.com>
6539 * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
6540 element when we aren't hydrating is illegal. this has the
6541 pleasant side effect of removing the need to reparse attributes,
6542 so axe that code as well.
6544 2009-06-05 Chris Toshok <toshok@ximian.com>
6546 * textbox.cpp (TextBoxView::Blink): don't set deployments using
6547 the pattern Deployment::SetCurrent (GetDeployment()), as
6548 GetDeployment() issues a warning if the object's deployment
6549 doesn't match the current one. use
6550 DependencyObject::SetCurrentDeployment(true) instead.
6552 2009-06-04 Chris Toshok <toshok@ximian.com>
6554 * runtime.cpp (Surface::EmitError): stop unreffing the args after
6555 the Emit call. Emit unrefs them for us.
6557 2009-06-05 Jeffrey Stedfast <fejj@novell.com>
6559 * layout.cpp (layout_word_wrap): Stop processing when we come to
6560 open-punctuation if it isn't the first char in the word as this is
6561 a good break opportunity. Fixes the last remaining issue in
6564 2009-06-04 Jackson Harper <jackson@ximian.com>
6566 * xaml.cpp: Track the owner type of properties so we know whether
6567 or not to go into managed when we are dealing with an attached
6570 2009-06-04 Jeffrey Stedfast <fejj@novell.com>
6572 * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
6573 font face that fontconfig can find for the requested language.
6574 (FontFace::LoadFontFace): Get the lang string and pass it along.
6575 (FontFace::Init): initialize a default font hash table for
6576 non-latin languages.
6577 (FontFace::Shutdown): destroy aformentioned table.
6578 (FontFace::LoadDefaultFaceForLang): New helper method to load the
6579 default font face for a given language code.
6580 (FontFace::GetDefault): If the language in the Fc pattern is
6581 'special', use LoadDefaultFaceForLang().
6582 (TextFontDescription::.ctor): Initialize language.
6583 (TextFontDescription::.dtor): Free language.
6584 (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
6586 (TextFontDescription::UnsetFields): Unset the language field.
6587 (TextFontDescription::Merge): Merge the language field.
6588 (TextFontDescription::GetLanguage): New method to get the language.
6589 (TextFontDescription::SetLanguage): New method to set the language.
6590 (TextFontDescription::ToString): Modified a bit.
6592 * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
6594 (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
6595 TextFontDescription.
6597 2009-06-04 Jackson Harper <jackson@ximian.com>
6599 * xaml.cpp: The managed property could be either the property or
6602 2009-06-04 Larry Ewing <lewing@novell.com>
6604 * canvas.cpp (OnCollectionItemChanged): call
6605 InvalidateSubtreePaint on items when their position in the canvas
6606 changes to make sure we clear the old region. Fixes a couple of
6607 the inkpresenter tests.
6609 2009-06-04 Larry Ewing <lewing@novell.com>
6611 * shape.cpp (ComputeStretchBounds): reject negative width/height
6612 settings. Fixes test-shape-negative.xaml
6614 2009-06-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
6616 * multiscaleimage.cpp: Add a debugging abort to try to find the
6619 2009-06-04 Alan McGovern <amcgovern@novell.com>
6622 * type-generated.cpp: Actually add IsEnabledChangedEvent
6624 2009-06-04 Alan McGovern <amcgovern@novell.com>
6626 * control.h: Add IsEnabledChangedEvent to native
6628 * type-generated.cpp: regen
6630 2009-06-04 Stephane Delcroix <sdelcroix@novell.com>
6632 * multiscaleimage.cpp: qtree_insert () takes no value. returns
6633 the newly created QTreeNode. qtree_insert_at () renamed to
6634 qtree_insert_with_value ().
6636 2009-06-03 Alan McGovern <amcgovern@novell.com>
6641 * uielement.cpp|h: Calling Control.Focus () results in a recursive
6642 check to find a focusable element. A mouse click does a non-recursive
6643 check on the elements which were 'hit'. Fixes two DRTs.
6645 2009-06-03 Jackson Harper <jackson@ximian.com>
6647 * xaml.cpp: Update some error messages.
6648 - Pass the current namespace in when creating property infos in
6650 * frameworkelement.h: ActualWidth and ActualHeight are readonly
6652 * dependencyproperty.g.cpp: regen
6654 2009-06-03 Jeffrey Stedfast <fejj@novell.com>
6656 * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
6657 bit more than FT_Get_Char_index().
6659 * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
6660 trailing lwsp towards line width, even if underlined.
6661 (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
6662 we are the last glyph cluster on a line.
6663 (GenerateGlyphCluster): Keep track of underline width (calculated
6664 using width up to/including last non-lwsp char).
6665 (word_type_changed): Consider numerics as part of the containing
6668 2009-06-03 Jackson Harper <jackson@ximian.com>
6670 * xaml.cpp|h: We need to look for managed properties on native
6672 - Set the element info for properties to the type of the property.
6673 - Add the ability for properties to force their set to be in
6674 managed even if they come from a native type.
6676 2009-06-03 Alan McGovern <amcgovern@novell.com>
6678 * uielement.cpp: Calculate the Transform between two UIElements
6681 2009-06-03 Alan McGovern <amcgovern@novell.com>
6683 * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
6684 we need to populate M11/M12/M21 etc with the correct values.
6686 2009-06-02 Chris Toshok <toshok@ximian.com>
6688 * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
6689 Type::INVALID as its Kind. This is another facet to the "we need
6690 to register enum types" work that will need to be done. The
6691 GetKind() method needs to eventually return a property Kind, but
6692 until then we'll just check for Type::INVALID.
6694 2009-06-02 Sebastien Pouliot <sebastien@ximian.com>
6696 * security.c: Use the PREVIEW_VERSION for the environment variable
6697 used to turn off security (coreclr and verifier)
6699 2009-06-02 Jeffrey Stedfast <fejj@novell.com>
6701 * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
6702 the run->SetAutogenerated() logic a while back which is causing
6705 * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
6706 longer supports this wrapping model.
6708 2009-06-02 Larry Ewing <lewing@novell.com>
6710 * uielement.cpp (DoArrange): don't poke at unset values. Fixes
6713 2009-06-02 Jeffrey Stedfast <fejj@novell.com>
6715 * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
6718 2009-06-02 Alan McGovern <amcgovern@novell.com>
6720 * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
6721 reverse logical order.
6724 * uielement.cpp|h: Make Focus a virtual method on UIElement.
6726 * src/runtime.cpp: When the surface receives a mouse down we need to
6727 focus the first control added to the root element if the user has not
6728 clicked on a control or focused one using Control.Focus (). Then any
6729 pending Focus events are raised before the mouse event is processed.
6731 * src/window-gtk.cpp: Always pass a right mouse button event into the
6732 Surface so that we can fire any pending Focus events to match the
6733 behaviour of Silverlight.
6735 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6737 * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6738 since g_ascii_strtoull isn't available in sled.
6740 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6742 * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6743 since g_ascii_strtoull isn't available in sled.
6745 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6750 * type-generated.cpp: Regenerated.
6752 * downloader.h: Removed streaming_features, not used here anymore.
6758 * pipeline-asf.cpp|h:
6759 * mms-downloader.cpp|h: Implement support for server side playlists.
6761 2009-06-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
6763 * pipeline.cpp: Check queued_requests for null after locking too.
6765 2009-06-02 Alan McGovern <amcgovern@novell.com>
6767 * runtime.cpp|h: Focus changed events are emitted synchronously right
6768 before a MouseLeftButtonDown or MouseRightButtonDown event.
6770 2009-06-01 Chris Toshok <toshok@ximian.com>
6772 * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
6773 here too so xaml.cpp knows if the type is creatable.
6775 * type.h, cbinding.cpp|h: regen
6777 2009-06-01 Chris Toshok <toshok@ximian.com>
6779 * xaml.cpp (dependency_object_add_child): only do this check for
6780 non-Type::MANAGED children.
6782 2009-06-01 Chris Toshok <toshok@ximian.com>
6784 * grid.cpp|h: the row/columndefinitioncollections do not permit
6785 definitions to be inserted more than once.
6787 * type.h.in (class Type): add IsCtorVisible method and ctor arg.
6789 * type.h, type-generated.cpp: regen.
6791 * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
6792 the instance if the ctor is visible.
6793 (dependency_object_add_child): if the ctor for the child isn't
6794 visible, error out even if it's the same type/kind as the
6797 2009-06-01 Jeffrey Stedfast <fejj@novell.com>
6799 * deployment.cpp (Dispose): Properly chain up to
6800 DependencyObject::Dispose().
6802 * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
6804 * brush.cpp (ImageBrush::Dispose): Chain up to
6805 TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
6806 crash in GlyphsManagedDRT
6808 * dependencyobject.cpp (WildcardListener): Uh, this needs to
6809 subclass Listener or we can't go around casting it to a Listener.
6810 (CallbackListener): Same.
6812 2009-06-01 Chris Toshok <toshok@ximian.com>
6814 * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
6815 end_idx == 0) return early.
6817 * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
6818 the toplevel object as hydrated if parser_info->hydrating == true.
6819 this fixes some managed parsing stuff since XamlReader.Load was
6820 using the same codepath (just passing NULL into
6821 XamlReader::HydrateFromString.)
6823 2009-05-29 Jeffrey Stedfast <fejj@novell.com>
6825 * application.cpp (GetResourceAsPath): Fixed extra
6826 XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
6829 2009-05-29 Alan McGovern <amcgovern@novell.com>
6831 * control.cpp: When Control.Focus () is called, if the control itself
6832 is not focusable, we need to check it's visual children. The call will
6833 complete successfully if any of the children are focusable, and that
6834 child will become the focused element.
6836 2009-05-29 Alan McGovern <amcgovern@novell.com>
6838 * control.cpp|h: If a control becomes disabled, it loses mouse capture
6839 and cannot regain it later. If CaptureMouse is called on a disabled
6840 control, the mouse is successfully captured and then immediately
6841 released which fires the LostMouseCapture event.
6843 * runtime.cpp|h: If control A captures the mouse, control B can't steal
6844 the capture or release the capture. Add an explicit ReleaseMouseCapture
6845 function to accomodate this behaviour.
6847 * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
6848 function which signifies whether or not the current UIElement can keep the
6851 2009-05-28 Jeffrey Stedfast <fejj@novell.com>
6853 * textbox.h (class PasswordBox): Marked PasswordProperty as
6854 AlwaysChange so that setting this property (even to the same
6855 value) will force a PasswordChanged event to be emitted.
6856 (class TextBox): Marked SelectedTextProperty as AlwaysChange to
6857 fix moon-unit test: SetIdenticalSelectedText()
6859 * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
6860 printfs for utf8->ucs4 conversion errors.
6862 2009-05-28 Jeffrey Stedfast <fejj@novell.com>
6864 * textbox.h (class TextBox): Added the AlwaysChange metadata to
6865 SelectionStart/Length properties.
6867 * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
6868 to asynchronously emit SelectionChanged events.
6869 (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
6870 (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
6871 (TextBox::EmitSelectionChanged): Simply emit the event now, don't
6872 bother updating state which is now handled elsewhere.
6873 (TextBox::EmitTextChanged): Same.
6874 (TextBox::OnPropertyChanged): When clamping the SelectionLength
6875 value due to a SelectionState property change, block events - we
6876 should only emit a single SelectionChanged event. Also modified to
6877 avoid emitting a TextBoxModelChanged event if the values didn't
6878 actually change. Same for SelectionLength changes.
6880 2009-05-28 Chris Toshok <toshok@ximian.com>
6882 * value.h.in, value.cpp: add a copy assignment operator.
6886 2009-05-28 Alan McGovern <amcgovern@novell.com>
6888 * control.cpp: When changing Control.IsEnabled, create the
6891 2009-05-28 Alan McGovern <amcgovern@novell.com>
6893 * animation.cpp: Fix a double free caused by the line
6894 converted = Value (*value);
6896 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
6898 * pipeline-ui.cpp: Protect against a null surface.
6900 * mediaelement.cpp: Get the surface from the deployment (which should
6901 always have a surface) instead of the media element's surface
6902 (which is not guaranteed to be set always).
6904 2009-05-28 Alan McGovern <amcgovern@novell.com>
6906 * control.cpp|h: Control.IsEnabled propagates to its children
6907 when the control is Loaded.
6909 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
6913 2009-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
6915 * mms-downloader.cpp: Custom headers must be requested before
6916 opening the downloader.
6918 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
6920 * multiscaleimage.h|cpp: replace the hash cache on uri by
6921 a set of qtree, one per subimage. This should speed stuffs
6922 a lot, as uri crating/parsing/hashing was taking up to 20%
6925 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
6927 * multiscalesubimage.h: GetId (). Get subimage id, used as
6930 2009-05-28 Stephane Delcroix <sdelcroix@novell.com>
6932 * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
6933 qtree_insert, etc. The Q(uad)Tree data structure is a tree with
6934 4 child nodes, matching the tree-ish pyramid of MSI tiles.
6936 2009-05-28 Andreia Gaita <avidigal@novel.com>
6938 * timeline.cpp: Stop the clock when you call Stop.
6940 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
6942 * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
6943 argument which defaults to true. If not set, we avoid calling
6944 SyncText() even if emit has the TEXT_CHANGED bit set.
6945 (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
6946 false if the value was just set to null.
6948 2009-05-27 Alan McGovern <amcgovern@novell.com>
6951 * control.cpp: Implement correct propagation of
6952 Control.IsEnabled. Children of disabled controls are
6953 disabled. When their parent is re-enabled, they go back to
6954 their previous state.
6956 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
6958 Fixes to make sure that an TextChanged and SelectionChanged events
6959 are emitted after each and every change to the Text/Selection
6962 * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
6963 batch operation. Prevents SyncAndEmit() from doing anything until
6964 all nested batch operations are completed.
6965 (TextBoxBase::BatchPop): Call at the end of each
6967 (TextBoxBase::*): Instead of using inkeypress, use the more
6968 generic BatchPush()/Pop().
6969 (TextBox::OnPropertyChanged): Call SyncAndEmit() after
6970 Text/Selection changes.
6971 (PasswordBox::OnPropertyChanged): Same.
6973 2009-05-27 Geoff Norton <gnorton@novell.com>
6975 * runtime.cpp|h: Support the splash progress/completed events.
6977 * type-generated.h: Regen
6979 2009-05-27 Jeffrey Stedfast <fejj@novell.com>
6981 * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
6982 if the TextBox is loaded and unset the emit state.
6983 (TextBox::EmitTextChanged): Same.
6985 2009-05-27 Geoff Norton <gnorton@novell.com>
6987 * deployment.cpp|h: Allow reinitializing the appdomain if our
6988 Source has changed, or we're switching from the splash screen to
6991 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
6994 * textblock.cpp: Fix warnings.
6996 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
6999 * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
7001 2009-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
7007 * mms-downloader.cpp:
7008 * internal-downloader.h:
7009 * file-downloader.h:
7010 * file-downloader.cpp:
7011 * pipeline-asf.cpp: Updated according to downloader API changes.
7014 * downloader.cpp: Add support for retrieving response headers
7015 and disable caching. Initialize the downloader interface methods
7016 to their default/dummy methods statically.
7020 * type-generated.cpp:
7022 * cbinding.cpp: Regenerated.
7024 2009-05-27 Alan McGovern <amcgovern@novell.com>
7026 * resources.cpp: Wait til AddedToCollection returns success
7027 before adding the item to the hashtable.
7029 2009-05-27 Alan McGovern <amcgovern@novell.com>
7031 * resources.cpp: Propagate the error (if there is one) from
7032 Collection::AddWithError. If there is an error, clear the item
7033 from the hashtable before returning.
7035 2009-05-27 Alan McGovern <amcgovern@novell.com>
7039 * dependencyproperty.g.cpp: Control.Enabled needs to be
7040 created in native code as it's required for hittesting. A
7041 disabled control and its visual children do not receive
7042 mouse events and are not visible to
7043 VisualTreeHelper.FindElementInHostCoordinates.
7045 2009-05-26 Jeffrey Stedfast <fejj@novell.com>
7047 * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
7048 on the StyleSimulations value.
7049 (Layout): No longer need to pass along StyleSimulations to
7052 * font.cpp (style_weights): Added more style weight name mappings.
7053 (style_slants): Same.
7054 (FontFace::IsItalic): New method to query the font face to see if
7055 it is italic or not.
7056 (FontFace::IsBold): Same idea.
7057 (TextFont::TextFont): Now takes a TextFontDescription so that we
7058 can initialize the new 'simulate' member variable which tells us
7059 if we have to simulate bold or italics due to not finding a
7061 (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
7062 argument. Instead, it now uses the 'simulate' member variable to
7063 pass to FontFace::LoadGlyph().
7064 (TextFontDescription::CreatePattern): Always add Weight and Slant
7065 to the pattern now, even if it is the default font
7066 family. Silverlight 2.0 no longer restricts bold/italics to
7069 2009-05-26 Chris Toshok <toshok@ximian.com>
7071 * xaml.cpp (XamlElementInstance::SetName): if it's a
7072 dependencyobject, add it to the container here.
7073 (XamlElementInstance::SetKey): same.
7074 (end_element_handler): only do the AddToParentContainer call here
7075 if the element is not a dependencyobject.
7077 2009-05-25 Jeffrey Stedfast <fejj@novell.com>
7079 * glyphs.cpp: Changed 'style' to be unsigned.
7081 2009-05-25 Andreia Gaita <avidigal@novel.com>
7083 * timeline.h|cpp (DispatcherTimer): reset the clock properly when
7084 restarting a dispatcher timer. also, rename Run to Restart.
7085 note: if a timer is not stopped or started during it's tick event,
7086 the time spent on the tick is counted for the next tick on the
7089 2009-05-25 Chris Toshok <toshok@ximian.com>
7091 * runtime.h|cpp (Surface::EmitError): add an overload so
7092 Application.cs can cause an error to be emitted on the surface.
7094 * cbinding.h|cpp: regen.
7096 2009-05-25 Andreia Gaita <avidigal@novel.com>
7098 * border.cpp (OnPropertyChanged): Invalidate when background is
7101 2009-05-25 Chris Toshok <toshok@ximian.com>
7103 * uielement.cpp (UIElement::GetTransformToUIElementWithError):
7104 this method fails incorrectly when you call it on the toplevel
7105 element of a surface.
7107 2009-05-25 Chris Toshok <toshok@ximian.com>
7109 * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
7110 for separate resource dictionary name registration. this isn't
7111 exactly right, since the name *should* be unregistered.
7113 2009-05-25 Chris Toshok <toshok@ximian.com>
7115 * validators.cpp (Validators::TemplateValidator): this is causing
7116 DRT 438 to throw an exception and subsequently timeout. its
7117 removal doesn't seem to break anything else, so ifdef it out with
7120 2009-05-25 Alan McGovern <amcgovern@novell.com>
7125 * dependencyobject.cpp
7126 * dependencyproperty.cpp
7127 * dependencyproperty.g.cpp
7128 * dependencyproperty.h
7129 * uielement.h: There are two types of DependencyProperty.
7130 Core properties and custom properties. Custom properties
7131 do not set the parent on a DO. This makes the old
7132 'SetsParent' property redundant, so remove it.
7134 2009-05-22 Chris Toshok <toshok@ximian.com>
7136 * xaml.cpp (XamlElementInstance::SetName): don't call
7137 AddToContainer here. in case the element is a value type, and
7138 we're adding it to a RD on a managed type (like StackPanel), the
7139 managed xaml loader will marshal the value type to C# and we'll
7140 lose any further updates to the value typed object by the parser.
7141 That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
7142 ManagedXamlLoader will see a color with #00000000 as its value, as
7143 the content hasn't been parsed by the time we create the managed
7145 (XamlElementInstance::SetKey): same.
7146 (end_element_handler): call AddToParentContainer here instead.
7148 2009-05-22 Chris Toshok <toshok@ximian.com>
7150 * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
7151 were missing the case where HydratedFromXaml elements weren't
7152 updating their parent namescope on name changes, only their
7153 private ones. Adding the parent namescope fix fixes FaceMonkey's
7156 2009-05-22 Jackson Harper <jackson@ximian.com>
7158 * xaml.h|cpp: New callback for registering elements in
7159 containers, we need to do this earlier on in the parse than
7160 setproperty because other elements could reference these elements
7161 before they've been set.
7163 2009-05-21 Alan McGovern <amcgovern@novell.com>
7166 * src/cbinding.h: regen
7168 * dependencyproperty.c:
7169 * dependencyproperty.h: We can either register a 'core' property or a
7170 'custom' property from managed code. Core properties are part of the
7171 framework itself, custom properties are user-created. Custom properties
7172 don't set the parent or register names in namescopes.
7174 2009-05-21 Stephane Delcroix <sdelcroix@novell.com>
7176 * deepzoomimagetilesource.h:
7177 * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
7178 without listening to the event, if a tilesource is ready to be
7180 * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
7181 size from a subimage source.
7183 2009-05-21 Larry Ewing <lewing@novell.com>
7185 * multiscaleimage.cpp (RenderCollection): reoorder the max level
7186 test so that we only call get_tile_func once in that case. Speeds
7187 up hardrock and the moment.
7189 2009-05-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
7191 * debug.h: Added LOG_ASF.
7193 2009-05-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
7195 * runtime.h: Don't use 64 bit constants for the runtime debug enum.
7197 2009-05-21 Alan McGovern <amcgovern@novell.com>
7201 * src/dependencyproperty.g.cpp: regen
7203 * dependencyobject.cpp:
7204 * dependencyproperty.cpp:
7205 * dependencyproperty.h:
7206 * uielement.h: Add the ability to set a DP as non-parenting and
7207 apply it to FrameworkElement::TagProperty
7209 2009-05-20 Larry Ewing <lewing@novell.com>
7211 * multiscaleimage.cpp (RenderCollection): fix bug introduced in
7212 earlier tile size fix. Fixes covertocover.
7214 2009-05-20 Larry Ewing <lewing@novell.com>
7217 * bitmapsource.cpp: when creating a cached surface use the group
7218 target type not the overall target.
7220 2009-05-20 Larry Ewing <lewing@novell.com>
7222 * frameworkelement.cpp (ComputeActualSize): avoid making a
7223 IsLayoutContainer call here.
7225 2009-05-20 Stephane Delcroix <sdelcroix@novell.com>
7227 * multiscaleimage.cpp: support different tile sizes for the collection
7228 and the individual images. Fixes "the moment" 2D.
7230 2009-05-20 Larry Ewing <lewing@novell.com>
7232 * xaml.cpp: update the parser error numbers and strings to match 2.0.
7234 2009-05-20 Larry Ewing <lewing@novell.com>
7236 * multiscaleimage.cpp: small change to avoid getting the property
7239 2009-05-20 Alan McGovern <amcgovern@novell.com>
7244 * type-generated.cpp: Register 'float' as a known type
7246 2009-05-20 Chris Toshok <toshok@ximian.com>
7248 * type.h.in: a few changes. We no longer pass the kind name to
7249 the ctor, since nothing ever uses it, and the type name is enough.
7250 add both an interface array and array count to the Type ctor, as
7251 well as a is_interface bool. Lastly, add IsAssignableFrom
7254 * dependencyobject.cpp (DependencyObject::IsValueValid): switch
7255 from using a direct comparison on Kinds to using
7256 Type::IsAssignableFrom. this makes interfaces work.
7258 * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
7260 * animation.cpp (AnimationClock::HookupStorage): instead of
7261 comparing kinds, use Type::IsAssignableFrom to see if we can
7262 animate the property using a particular timeline type.
7263 (DoubleAnimation::GetCurrentValue,
7264 DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
7265 ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
7266 PointAnimation::GetTargetValue): add code to deal with the start
7267 value not being the same type as the animation uses (this can
7268 happen if we're animating an interface property like
7269 IComparable.) The start values in that case are 0.0, Point(0.0),
7270 and Color(0,0,0,0), respectively.
7272 2009-05-19 Larry Ewing <lewing@novell.com>
7274 * collection.cpp: avoid some GetDeployment calls in looping cases.
7276 2009-05-19 Larry Ewing <lewing@novell.com>
7278 * frameworkelement.cpp (UpdateLayout): clear the needs flags when
7279 we restart in case they we're properly cleared before.
7281 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
7283 * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
7284 function pointers to call whenever the corresponding virtual method
7287 * enums.h: Move enums from the pipeline here (makes it easier to
7288 create c bindings for methods taking enums)
7292 * pipeline-ffmpeg.cpp: Update accccording to enum changes.
7294 * codec-version.h.in: Bump ABI version.
7298 * type-generated.cpp: Regenerated.
7300 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
7306 * pipeline-ffmpeg.cpp:
7307 * pipeline.cpp|h: Add accessors for fields in VideoStream,
7308 AudioStream and MediaFrame.
7309 * cbinding.cpp|h: Regenerated.
7311 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
7313 * cbinding.cpp|h: Regenerated.
7315 2009-05-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
7317 * security.h: Include <mono/metadata/assembly.h>.
7318 Fixes a warning (and the build with MD).
7320 2009-05-19 Alan McGovern <amcgovern@novell.com>
7322 * animation.cpp: Add some optimisations to ObjectKeyFrames.
7323 Don't call back into managed when the value is null or when
7324 the the value is already of the exact right kind. This will
7325 need to be reviewed once unmanaged code understands
7326 interfaces so we can fastpath interfaces too.
7328 2009-05-18 Larry Ewing <lewing@novell.com>
7332 * frameworkelement.cpp: for the time being use the needs* flags on
7333 surface to skip the UpdateLayout logic when the tree is clean.
7334 Optimize a couple of the property reads inside the deep walk.
7336 * provider.cpp (GetPropertyValue): rework some more of the checks
7337 to remove some other remaining unneeded checks.
7339 2009-05-18 Chris Toshok <toshok@ximian.com>
7341 * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
7344 2009-05-18 Larry Ewing <lewing@novell.com>
7346 * bitmapsource.cpp (GetSurface): use the content type of the image
7347 when creating the native surface.
7349 2009-05-18 Larry Ewing <lewing@novell.com>
7351 * provider.cpp (GetPropertyValue): reorder the framework element
7352 property lookup to avoid an extra type inquiry in a potentially
7355 2009-05-18 Larry Ewing <lewing@novell.com>
7357 * xaml.cpp (dependency_object_set_attributes): move the types
7358 lookup outside the loop.
7360 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
7363 * type.h: Regenerated.
7366 * dependencyobject.h:
7367 * dependencyproperty.h:
7370 * frameworkelement.h:
7373 * type.h: Sprinkle CBindingPrequisite around. Also use ints
7374 instead of Type::Kind values in function pointers.
7376 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
7378 * window-gtk.h: Add a GetNativeWidget which returns a void
7379 pointer instead of GtkWidget* so that we don't need to include
7380 gtk for the c bindings.
7382 2009-05-18 Alan McGovern <amcgovern@novell.com>
7384 * contentcontrol.cpp: For contentcontrols, the applied
7385 template is only cleared if the old or new content is a
7386 UIElement (frameworkelement?). The fallback 'template' of a
7387 Grid + TextBlock is also reused every time.
7389 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
7391 * utils.h: Use c++-style structs to please the generator.
7393 2009-05-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
7395 * window-gtk.h: Add a GetNativeWidget which returns a void
7396 pointer instead of GtkWidget* so that we don't need to include
7397 gtk for the c bindings.
7398 * cbinding.h|cpp: Updated.
7400 2009-05-16 Chris Toshok <toshok@ximian.com>
7402 * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
7403 be g_strstrip'ed, but we can't do it until right before we use it,
7406 2009-05-16 Chris Toshok <toshok@ximian.com>
7408 * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
7409 XamlElementInfo::IsCDataVerbatim): new methods to set and get a
7410 flag telling the cdata_handler to not collapse/remove
7411 whitespace. <clr:String> requires this.
7412 (PrimitiveNamespace::FindElement): for the "String" case, call
7413 XamlElementInfo::SetIsCDataVerbatim(true).
7414 (char_data_handler): if the current element IsCDataVerbatim, just
7415 append the input string and return.
7417 2009-05-16 Alan McGovern <amcgovern@novell.com>
7419 * security.c: Bump the security env var to _04
7421 2009-05-16 Alan McGovern <amcgovern@novell.com>
7429 * dependencyproperty.g.cpp: Add type converting to
7430 ObjectKeyFrame. The conversion is done during the Resolve
7431 phase. If the type conversion can't be completed an
7432 exception is thrown.
7434 2009-05-15 Chris Toshok <toshok@ximian.com>
7436 * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
7437 in the hydrated case we still need to register our name.
7438 (DependencyObject::ProviderValueChanged): don't swallow the error
7439 when we SetParent on the new_as_dep.
7440 (DependencyObject::SetParent): if we're adding a Hydrated
7441 element (i.e. one that was loaded using LoadComponent), we need to
7442 register its name into the parent namescope. Also, move the
7443 quickest check to the top so we don't do the family check on every
7444 SetParent call if the before/after parent are the same. Lastly,
7445 we only register names if the current parent is NULL. That is, if
7446 a named brush is a property on an element already, and its name is
7447 registered, we don't register it in the new namescope when it's
7448 set as a property on a second element. Odd but it matches SL
7450 (DependencyObject::FindName): no longer walk up the namescope
7451 hierarchy, and don't look up things in the toplevel's namescope
7454 * dependencyobject.h (class DependencyObject): add
7455 SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
7457 * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
7458 object as being hydrated.
7459 (everywhere): we don't need GetParentNamescope for anything. we
7460 always use the toplevel namescope of the subtree the parser is
7463 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
7464 don't pass a null error to ProviderValueChanged.
7466 2009-05-15 Larry Ewing <lewing@novell.com>
7468 * frameworkelement.cpp (UpdateLayout): just warn if the element is
7469 loaded don't skip it for now since it causes regressions in the
7472 2009-05-15 Chris Toshok <toshok@ximian.com>
7474 * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
7475 change that gets automatic storyboards with zero length children
7476 to have a zero length themselves.
7478 2009-05-15 Larry Ewing <lewing@novell.com>
7480 * grid.cpp (OnCollectionItemChanged): invalidate on column
7483 2009-05-15 Larry Ewing <lewing@novell.com>
7485 * debug.h (LOG_LAYOUT): use printf.
7487 * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
7489 * frameworkelement.cpp: reorder the updated_list and clean up some
7492 * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
7493 loaded here since it will break delayed queuing of loaded events
7494 when the tree is modified inside the event handler. Improves
7496 2009-05-15 Jackson Harper <jackson@ximian.com>
7498 * xaml.cpp: Use the property element's type instead of parsing out
7499 the name, this fixes setting propertys of imported managed types.
7501 2009-05-15 Alan McGovern <amcgovern@novell.com>
7504 * dependencyproperty.g.cpp: The Keyframes property of
7505 ObjectAnimationUsingKeyframes needs to be autogenerated.
7507 2009-05-15 Alan McGovern <amcgovern@novell.com>
7509 * type-generated.cpp:
7510 * frameworkelement.h: Properly handle exceptions when updating
7511 the source in a 2 way binding. Raise the
7512 BindingValidationError event in the right place.
7514 2009-05-14 Jackson Harper <jackson@ximian.com>
7516 * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
7518 2009-05-14 Larry Ewing <lewing@novell.com>
7520 * xaml.cpp (lookup_named_item): make this nonrecursive.
7522 2009-05-14 Jeffrey Stedfast <fejj@novell.com>
7524 * frameworkelement.cpp (OnPropertyChanged): Do a
7525 FullInvalidate(true) when the Horizontal or Vertical Alignment
7528 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7530 * dependencyobject.cpp: unref: only try to delete
7531 us if we had a 0 refcount after decrementing refcount.
7532 Also use an atomic fetch when checking if the object
7535 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7537 * dependencyobject.cpp: when printing stack traces
7538 first get all the lines to print, then print them.
7539 This way it's a lot less probable to get other lines
7540 in between when printing stacktraces from multiple threads.
7542 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7544 * dependencyobject.cpp: Print typename for object creation
7545 too, now that we don't have to call a virtual method to
7548 2009-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
7550 * timesource.h: G_PRIORITY_IDLE doesn't exist, use
7551 G_PRIORITY_HIGH_IDLE.
7553 2009-05-13 Chris Toshok <toshok@ximian.com>
7555 * xaml.cpp (class XamlContextInternal): allow for a parent context
7556 so that we can track context's (and resources) across multiple
7557 template instantiations.
7558 (create_resource_list): just stuff the FrameworkElement on the
7559 list and leave the GetValue(UIElement::Resources) for when we look
7560 up the actual resource.
7561 (end_element_handler): when creating a new XamlContext pass in our
7562 current XamlContext.
7563 (XamlContextInternal::LookupNamedItem): handle both changes (FWE
7564 in our resources list, and parent context chaining.)
7566 2009-05-13 Jackson Harper <jackson@ximian.com>
7568 * xaml.cpp: We need to dup the top_element since this can be
7571 2009-05-13 Chris Toshok <toshok@ximian.com>
7573 * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
7574 clocks (those with Duration=00:00:00) we weren't emitting
7575 completed (or switching to Fill/Stop).
7577 2009-05-13 Jackson Harper <jackson@ximian.com>
7579 * xaml.h|cpp: use a Value* for top level objects, this lets us get
7580 rid of the gchandle hack in the managed xaml loader for non DOB
7583 2009-05-13 Larry Ewing <lewing@novell.com>
7585 * canvas.cpp: make IsLayoutContainer nonrecursive using
7588 * frameworkelement.cpp:
7589 * uielement.cpp, uielement.h:
7591 * shape.cpp: start reworking the container layout logic to avoid
7594 * collection.cpp: don't ref elements inside DeepTreeWalker use
7595 UnsafeUIElementNode instead.
7597 * dirty.cpp (UpdateLayout): remove some dead code.
7599 2009-05-13 Alan McGovern <amcgovern@novell.com>
7601 * value.cpp: Ensure we don't explode when checking null uris
7603 2009-05-13 Alan McGovern <amcgovern@novell.com>
7605 * validators.cpp: If StyleProperty has a value and it is
7606 'null', that is allowed to be replaced.
7608 2009-05-12 Chris Toshok <toshok@ximian.com>
7610 * timeline.cpp (DispatcherTimer::Start): when resetting the clock
7611 we need to make sure to reset the root parent time, or else the
7612 timer will tick immediately when started (if it's previously hit
7615 2009-05-12 Larry Ewing <lewing@novell.com>
7617 * collection.cpp, collection.h: Add a SkipBranch method to avoid
7618 computing walking into the tree when we can.
7620 * frameworkelement.cpp (UpdateLayout): Use the new skip branch
7621 logic in deeptreewalker to avoid invisible elements.
7623 2009-05-12 Larry Ewing <lewing@novell.com>
7625 * frameworkelement.cpp (UpdateLayout): revert the visibility change
7628 2009-05-12 Larry Ewing <lewing@novell.com>
7630 * frameworkelement.cpp (ComputeBounds): make sure the bounds are
7631 the size of the full element, and skip elements based on the
7632 actual visibility setting not the computed one.
7634 2009-05-12 Jeffrey Stedfast <fejj@novell.com>
7636 * textbox.cpp (InvalidateCursor): New helper method which applies
7637 the absolute transform to the cursor before invalidating the
7639 (ShowCursor): Use InvalidateCursor().
7641 (UpdateCursor): Here too.
7643 2009-05-12 Jeffrey Stedfast <fejj@novell.com>
7645 * textbox.cpp (OnKeyDown): Need to set the handled flag on the
7646 routed event args in the case where the key event is handled by
7648 (OnKeyUp): Set the handled flag in both cases here.
7650 2009-05-11 Alan McGovern <amcgovern@novell.com>
7654 * contentcontrol.cpp: Recommit r133738 as it's not causing the
7657 2009-05-09 Andreia Gaita <avidigal@novell.com>
7659 * uielement.h: Add GenerateJSBinding annotation to
7660 CaptureMouse, ReleaseMouseCapture and
7661 GetTransformToUIElementWithError (TransformToVisual)
7663 2009-05-09 Chris Toshok <toshok@ximian.com>
7665 * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
7666 this check so we're buildable on SLED10.
7668 2009-05-08 Jeffrey Stedfast <fejj@novell.com>
7670 * layout.cpp (layout_word_wrap): If we can't find a suitable place
7671 to wrap in the first time through the loop, make sure to respect
7672 the 'force' state the second time through.
7674 * application.cpp (GetResourceAsPath): Updated.
7676 * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
7677 to specify whether the filename should be lowercased as it is
7679 (ExtractAll): The 'canon' argument has been renamed to 'lower'
7680 which more accurately reflects its purpose. Pass this on to
7681 CanonicalizeFilename().
7683 2009-05-08 Alan McGovern <amcgovern@novell.com>
7687 * contentcontrol.cpp: Revert the changes in r133738 until I
7688 can figure out why the x86 bot doesn't like them. It's
7689 causing the extended controls tests to time out.
7691 2009-05-07 Alan McGovern <amcgovern@novell.com>
7695 * contentcontrol.cpp: If the content property changes, the
7696 Template is cleared if it has already been applied.
7698 2009-05-07 Andreia Gaita <avidigal@novell.com>
7700 * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
7701 the to_element is the top level element.
7703 2009-05-06 Chris Toshok <toshok@ximian.com>
7705 * xaml.cpp (dependency_object_set_attributes): we can't assume
7706 that a NULL value for @v means it hasn't been set, since {x:Null}
7707 could have been specified. we need another flag to make it work.
7709 2009-05-06 Jeffrey Stedfast <fejj@novell.com>
7711 * textbox.cpp (OnPropertyChanged): Guard against calling
7712 ResetIMContext in the middle of some keyboard input.
7714 2009-05-05 Chris Toshok <toshok@ximian.com>
7716 * collection.cpp (Collection::InsertWithError): we need to make a
7717 further copy because the caller could remove the element in a
7718 handler, which causes us to delete the value (values aren't ref
7721 2009-05-05 Jeffrey Stedfast <fejj@novell.com>
7723 * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
7724 false since we're not rendering the preedit strings ourselves.
7725 (TextBoxBase::SetSurface): Update the GtkIMContext's client
7727 (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
7728 where the cursor is at.
7730 2009-05-05 Alan McGovern <amcgovern@novell.com>
7732 * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
7733 elements to be added to ResourceDictionarys in managed land.
7735 2009-05-05 Jeffrey Stedfast <fejj@novell.com>
7737 * layout.cpp (Select): Fixed some selection logic.
7739 * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
7740 and hook up some callbacks. Also init need_im_reset to false.
7741 (TextBoxBase::~TextBoxBase): Kill the IMContext.
7742 (TextBoxBase::OnKeyDown): Filter the event key through the
7743 IMContext. If it handles the key, don't do anything more.
7744 (TextBoxBase::DeleteSurrounding): New callback method for
7746 (TextBoxBase::RetrieveSurrounding): Same.
7747 (TextBoxBase::Commit): New IMContext callback method to commit the
7748 input-method chars into the TextBox.
7749 (TextBoxBase::ResetIMContext): New helper method to reset the
7751 (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
7752 (TextBoxBase::OnFocusIn): Same.
7753 (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
7754 changes, update the GtkIMContext state accordingly. Same with the
7755 various Selection states and Text property.
7757 * eventargs.cpp (GetEvent): New method to get access to the
7758 original GdkEventKey event for use with GtkIMContext.
7760 2009-05-05 Alan McGovern <amcgovern@novell.com>
7764 * dependencyproperty.g.cpp: Back out the default value fix
7765 until the parser can be updated to handle this.
7767 2009-05-05 Alan McGovern <amcgovern@novell.com>
7771 * dependencyproperty.g.cpp: PathGeometry.Figures and
7772 ObjectAnimationUsingKeyframes.KeyFrames both need to be
7773 autogenerated. This allows them to pass their respective
7774 DefaultValues tests (when those tests are run).
7776 2009-05-05 Alan McGovern <amcgovern@novell.com>
7778 * template.h: Remove the forward decls for TemplateBinding and
7779 XamlTemplateBinding as they don't exist in unmanaged anymore
7781 2009-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
7783 * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
7785 2009-05-04 Geoff Norton <gnorton@novell.com>
7787 * codec-version.h.in: Bump
7788 * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
7790 2009-05-04 Jeffrey Stedfast <fejj@novell.com>
7792 * debug.cpp (Frame::ToString): fixed compile warning.
7794 * uielement.cpp (UpdateLayout): Need to return a bool here, we
7797 * textbox.cpp (Blink): Set the deployment.
7799 2009-05-03 Chris Toshok <toshok@ximian.com>
7801 * everywhere (NotifyListenersOfPropertyChange): add a MoonError
7804 * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
7805 can hook up TemplateBindings in managed code. Also, change all
7806 the loader callback types to take a loader pointer so we can get
7809 * template.h|.cpp: remove all the lists of bindings, the
7810 two different template binding types (XamlTemplateBinding and
7811 TemplateBinding) and their respective List::Node containers. all
7812 this is handled in managed land now, where it belongs.
7814 * dependencyproperty.h|.cpp: move
7815 PropertyChangedEventArgs to dependencyproperty.h, and unify the
7816 two types for property change handlers into simply
7817 PropertyChangeHandler.
7819 * dependencyobject.h: remove the PropertyChangedEventArgs struct
7820 from here, it now lives in dependencyproperty.h
7822 * dependencyobject.cpp (class CallbackListener): pass a MoonError
7824 (DependencyObject::ProviderValueChanged): reuse the
7825 PropertyChangedEventArgs since property change callbacks take them
7826 now instead of splitting up the old_value/new_value/property.
7828 * control.cpp (Control::Control, Control::~Control,
7829 Control::ApplyTemplate): remove all reference to the list of
7832 * control.h (class Control): remove the list of bindings.
7834 * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
7837 2009-05-03 Jeffrey Stedfast <fejj@novell.com>
7839 * runtime.h (InMainThread): check main_thread_inited.
7841 * runtime.cpp: All flags variables are now 32bit. Split _EX flags
7842 into a second debug_flags_ex. Also added a new bool var to keep
7843 track of whether or not main_thread has been initialized since we
7844 can't necessary compare against NULL.
7848 2009-05-03 Jeffrey Stedfast <fejj@novell.com>
7850 * debug.cpp: #include <unistd.h>
7852 * *.h: Don't #include stdint.h or unistd.h (only cpp files should
7855 2009-05-02 Jeffrey Stedfast <fejj@novell.com>
7862 * value.h[.in]: Don't include stdint.h
7864 2009-05-01 Jackson Harper <jackson@ximian.com>
7866 * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
7869 2009-05-01 Larry Ewing <lewing@novell.com>
7871 * collection.cpp: rework the sorting invalidation logic so that we
7872 don't do it quite as often.
7874 2009-05-01 Larry Ewing <lewing@novell.com>
7877 * collection.cpp: cache the deployment more and add a
7878 VisualTreeWalker interface to help with that.
7880 2009-05-01 Larry Ewing <lewing@novell.com>
7884 * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
7885 add a static version that handles looking up the deploy for us.
7889 * value.cpp: Make it possible to use a cached deployment when
7890 retriving values using the ::As* methods and calling
7891 Types::IsSubclassOrSuperclassOf.
7893 * style.cpp: when sealing the style use the cached deployment logic.
7895 2009-05-01 Larry Ewing <lewing@novell.com>
7897 * dependencyobject.h:
7898 * xaml.cpp: use types more directly in a few more places to reduce
7899 calls to Deployment::GetCurrent even more.
7901 2009-05-01 Jackson Harper <jackson@ximian.com>
7904 * dependencyobject.cpp|h: Move the name validation check to a
7905 validator (phase one of moving NameProperty to frameworkelement).
7906 * dependencyproperty.g.cpp: regen
7908 2009-05-01 Jackson Harper <jackson@ximian.com>
7911 * value.h.in: Sync with their .h's
7913 2009-04-30 Jackson Harper <jackson@ximian.com>
7915 * xaml.cpp: Use the type system for detecting if we should be in
7916 buffering mode, anything that is a FrameworkTemplate
7917 should be buffered. This fixes custom types that inherit from
7918 DataTemplate not getting buffered properly.
7920 2009-04-30 Jackson Harper <jackson@ximian.com>
7922 * xaml.cpp: We need to pass the object to GetPropertyName because
7923 non DOB objects can have content properties now.
7925 2009-04-30 Jackson Harper <jackson@ximian.com>
7927 * xaml.cpp: Don't require a content property name when we are
7928 trying to set a managed content property. This could be the
7929 content of a managed collection.
7931 2009-04-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
7933 * bitmapimage.cpp: Make sure we clean up any previous
7934 downloaders when we create new ones.
7936 2009-04-29 Larry Ewing <lewing@novell.com>
7938 * frameworkelement.cpp:
7939 * uielement.cpp (DoMeasure): reorder some calls to improve speed
7940 until the new logic lands.
7942 2009-04-29 Larry Ewing <lewing@novell.com>
7944 * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
7945 reduce Deployment::GetCurrent calls.
7948 * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
7951 2009-04-29 Larry Ewing <lewing@novell.com>
7954 * dependencyobject.cpp: reuse types to reduce calls to
7955 Deployment::GetCurrent ().
7957 2009-04-29 Alan McGovern <alan.mcgovern@gmail.com>
7959 * popup.cpp: Forgot to call the base Dispose method.
7961 2009-04-29 Geoff Norton <gnorton@novell.com>
7963 * debug.cpp: Not everyone in the world is 32-bit intel.
7965 2009-04-29 Jeffrey Stedfast <fejj@novell.com>
7967 * textblock.cpp (SetTextInternal): Protect everything from
7968 reentrancy and never replace the autocreated InlineCollection with
7969 a newly allocated one. Instead, Clear() the old one and add the
7971 (OnCollectionChanged): If !setvalue, then it means we are updating
7972 stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
7974 2009-04-29 Andreia Gaita <avidigal@novell.com>
7976 * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
7977 parseable stacktraces for later visualization
7979 2009-04-29 Andreia Gaita <avidigal@novell.com>
7981 * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
7982 calls in a nice way, for later parsing and visualization.
7984 2009-04-29 Geoff Norton <gnorton@novell.com>
7986 * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
7987 nicely crashes on a incomplete .so (thanks). As such we're going to
7988 sha1 the expected binary before blindly installing it to gatekeep
7991 2009-04-29 Jeffrey Stedfast <fejj@novell.com>
7993 Fixes some cursor position/selection bugs
7995 * layout.cpp (TextLayoutLine): Initialize a new member variable
7997 (Layout): Update line->count (needed for the reworking of
7998 GetCursor) and line->length (which was the case of the bugs)
7999 variables as we go. Switch to doing this for run->length too.
8000 (GetCursor): Reworked a bit to use character indexes to help us
8001 find the correct cursor position rather than using byte offsets
8002 which were more awkward.
8004 2009-04-29 Alan McGovern <amcgovern@novell.com>
8007 * popup.cpp: Remove the attached layer correctly when the
8008 surface is being nulled on a Popup.
8010 2009-04-29 Geoff Norton <gnorton@novell.com>
8013 * provider.cpp: GetIterator returns a ref'd iter, we need to delete
8014 it when we're done to clean it up.
8015 * dependencyproperty.g.cpp: You raise me up.
8016 * deployment.cpp|h: Deployment has a cyclic reference to things
8017 stored in it (AssemblyParts, NameScope), we need to break this cycle
8018 in our disposer so they can be properly cleand up.
8019 * xaml.cpp: If we create a new collection, and set the collection as
8020 some objects value, it will have a refcount of 2. We need to unref
8021 the collection once we've handed it off.
8023 2009-04-28 Geoff Norton <gnorton@novell.com>
8025 * popup.cpp: We cannot access this local value here since its been
8026 cleared in our dispose call.
8028 2009-04-28 Geoff Norton <gnorton@novell.com>
8030 * deployment.cpp: Now that we properly shut down the clocks and
8031 media threads, we can finalize the domain here instead of pumping
8034 2009-04-28 Chris Toshok <toshok@ximian.com>
8036 * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
8037 address of a temporary.
8039 2009-04-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
8042 * audio.cpp: When looping over playing nodes, don't include
8043 nodes in the Waiting state.
8045 * audio-alsa.cpp: when Played, update the poll list. The state
8046 might not actually have changed if only the Waiting flag was
8049 2009-04-28 Larry Ewing <lewing@novell.com>
8056 * frameworkelement.h:
8057 * frameworkelement.cpp: add FrameworkProvider for actual*
8058 values. Rework layout using the actual* values and add a first
8059 pass at looping layout.
8062 * collection.h: Add a deep tree walker that allows you to walk the
8063 entire tree without recursing.
8070 * canvas.cpp: rework layout logic for the new providers and handle
8071 more of the corner cases.
8074 * textblock.cpp: Remove the old Actual* provider since we use the
8075 generic one now. Go a bit crazy with Invalidations until they can
8078 * eventargs.cpp: stop using IsAnythingDirty.
8080 2009-04-28 Larry Ewing <lewing@novell.com>
8082 * dependencyobject.cpp:
8087 * timesource.h: rework the priority of our event queue so that
8088 we end up being more responsive to input and give the browser a
8089 chance to do things like repaint.
8091 2009-04-28 Jackson Harper <jackson@ximian.com>
8093 * xaml.cpp: Don't allow x:Class on non top level elements.
8095 2009-04-28 Jackson Harper <jackson@ximian.com>
8097 * dependencyproperty.cpp: When resolving property paths if we
8098 don't have enough info to lookup the correct managed type we just
8099 verify that the current lookup object has the correct type name,
8100 excluding namespace.
8102 2009-04-28 Alan McGovern <amcgovern@novell.com>
8107 * contentcontrol.cpp: Add the ability to stop ContentControl
8108 from automatically setting the LogicalParent when a
8109 FrameworkElement is added as the Content.
8111 2009-04-27 Jackson Harper <jackson@ximian.com>
8113 * value.cpp: property path's have expanded paths that need to be
8114 copied, freed, ect now.
8115 * propertypath.h: Add an expanded path to the property path, this
8116 is a path with managed types marked with namespaces expanded into
8117 full names. So 'moon:MyType' becomes something like
8118 'MoonNamespace.MyType'.
8119 * dependencyproperty.cpp: If an expanded path is available use
8120 that for property path parsing. Also added support for the ' mark
8121 for escaping full type names (otherwise full names could not have
8122 '.'s). The ' can only be used in expanded paths.
8123 * xaml.cpp: When parsing property paths expand out managed
8124 namespaces if possible.
8126 2009-04-27 Geoff Norton <gnorton@novell.com>
8128 * value.cpp: Its possible for these pointers to be 0x0 here, so
8129 we need to guard against a invalid dereference causing a SIGSEGV
8130 fixes moon-unit with toggleref on.
8132 2009-04-27 Geoff Norton <gnorton@novell.com>
8134 * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
8136 2009-04-24 Chris Toshok <toshok@ximian.com>
8138 It turns out the granularity of overriding in styles is at the
8139 setter level, not the style level. so if you have a local style
8140 with a setter for Background, it doesn't overwrite the default
8141 style setters for, say, Foreground. We handle this by having two
8142 style providers, with the local style provider overriding the
8143 default style provider.
8145 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
8146 initialize both of the style providers (at both LocalStyle and
8147 DefaultStyle levels.)
8148 (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
8149 style (so that values are converted in managed-land), and seal it
8150 at the local style level.
8151 (FrameworkElement::SetDefaultStyle): same blob here, but seal it
8152 at the default style level.
8154 * dependencyobject.cpp (DependencyObject::Initialize): pass
8155 precedences to the providers in their ctors, and also don't
8156 initialize a style provider here. This saves us from having a
8157 style provider on anything except frameworkelement subclasses.
8159 * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
8160 precedence ctor arg to property value providers.
8162 * provider.h: provider ctors now take both an object and a
8163 precedence level. that way they know what precedence level to
8164 notify changes on (this is mostly for the style provider, but it
8165 moves all the precedence level logic to the spot where we create
8166 the provider, not in the provider code itself.)
8168 * provider.cpp: add all the precedence ctor args.
8169 (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
8170 with the precedence we were initialized with.
8171 (AutoCreatePropertyValueProvider::GetPropertyValue): same.
8173 2009-04-24 Alan McGovern <amcgovern@novell.com>
8175 * runtime.cpp: When a layer is being detached, don't try to
8176 invalidate its bounds if the active window has already been
8177 torn down. Fixes the case where a popup is open while the
8178 window is being torn down.
8180 2009-04-24 Alan McGovern <amcgovern@novell.com>
8183 * popup.cpp: When the popup is detached from the surface, it
8184 should automatically close if it is open.
8186 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
8188 * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
8189 lwsp after going beyond the width constraint. Fixes the
8190 tests in the far right in MS DRT 206.
8192 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
8194 * font.cpp (GetGlyphInfo): Don't special-case
8195 ZeroWidthNonBreakingSpace anymore. Rely on the font for this
8196 glyph. That seems to be what SL2 does now...
8198 * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
8199 implemenetd a forced-wrap if we can't find a suitable place to
8202 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
8204 * layout.cpp (layout_word_wrap): Don't treat special numeric
8205 punctuation as the start of a numeric word until we see what lays
8208 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
8210 * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
8211 anymore, that was a 1.0-thing and can no longer be used. Also
8212 added support for non-breaking-glue classes as well as rules for
8213 breaking on combining-marks, open-punctuation, contingents,
8214 quotations, prefixes, and words starting with an infix.
8216 2009-04-23 Chris Toshok <toshok@ximian.com>
8218 * animation.cpp|.h, clock.cpp|.h: remove
8219 OnSurfaceAttach/OnSurfaceDetach. They're no longer used.
8221 2009-04-23 Chris Toshok <toshok@ximian.com>
8223 * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
8224 clock state and use that to tell whether to update the child
8225 clocks on this tick. Clock::UpdateFromParentTime will change it
8226 out from under us, and child clocks won't get updated the last
8227 time when we switch to Filling or Stopped.
8229 2009-04-23 Chris Toshok <toshok@ximian.com>
8231 * animation.cpp (Animation::AllocateClock): remove the name
8232 setting from here, since it only works here if the target/property
8233 were set on the animation itself.
8234 (AnimationClock::HookupStorage): and move it here, when we know
8235 both the target and property.
8237 * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
8238 Class::Event instead of instance->Event. also set the name of the
8239 storyboard in debug mode.
8240 (MultiScaleImage::SetViewportOrigin): same.
8241 (motion_finished): make static.
8243 2009-04-23 Chris Toshok <toshok@ximian.com>
8245 * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
8246 clocks (not clockgroups, mind you) if we're active and not paused.
8247 Fixes animations reverting in lutz's deep zoom demo.
8249 2009-04-23 Jeffrey Stedfast <fejj@novell.com>
8251 Lots of fixage for MS DRT #209
8253 * layout.cpp (layout_word_wrap): Fixed for inseparables,
8254 exclamations, ambiguous, and postfix. Also removed the
8255 glyph->index == 0 hack that was there for Silverlight 1.0
8257 2009-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
8259 * dependencyobject.h:
8260 * dependencyobject.cpp: Add a way to mark allow objects to be
8261 deleted on any thread, not just the main thread.
8263 * pipeline.cpp: MediaClosures can be deleted on any thread.
8265 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
8267 * layout.cpp (layout_word_wrap): Add a bit more logic for infix
8268 separators. Finishes off MSDRT 208.
8270 2009-04-22 Chris Toshok <toshok@ximian.com>
8272 * xaml.cpp (value_from_str): permit empty int32's (they're 0).
8273 add comment about empty doubles.
8275 2009-04-22 Chris Toshok <toshok@ximian.com>
8277 * xaml.cpp (dependency_object_add_child): guard against adding an
8278 empty Value to a resource dictionary. this happen when you have
8279 no content on a primitive type (<sys:Bool></sys:Bool>) and
8280 value_from_str can't deal with parsing an empty string.
8281 (value_from_str): for non-object/non-string types, we need to
8282 strip leading/trailing whitespace before attempting to parse. this
8283 allows things like: <sys:Bool> true </sys:Bool>
8284 (class XamlElementInstanceValueType): for empty elements the value
8285 will have never been set. try to set it here using an empty
8288 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
8290 * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
8291 SelectionLength values as they come in. Apparently this is what
8292 Silverlight does too.
8294 2009-04-22 Chris Toshok <toshok@ximian.com>
8296 * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
8297 with true meaning "i need another tick."
8298 (ClockGroup::UpdateFromParentTime): same.
8300 * timeline.cpp (DispatcherTimer::Start): use the timemanager to
8302 (DispatcherTimer::Run): use the root_clock's parent clock here to
8303 simplify the code a bit.
8304 (DispatcherTimer::~DispatcherTimer): same.
8306 * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
8307 we don't care about groups, just add it to the deployment's
8310 * timemanager.h|cpp (class RootClockGroup): new class to represent
8311 the root clock group created by a time manager to house all other
8312 clocks in a surface. It has slightly different behavior from a
8313 noprmal clock group, particularly wrt putting the timemanager to
8315 (TimeManager::TimeManager): create a RootClockGroup.
8316 (TimeManager::RemoveTickCall): if we're putting the time manager
8317 to sleep, check to see if this was the last tick call, and clear
8318 the flag (and stop the source if the flags are now empty).
8319 (TimeManager::NeedRedraw): now that clock smoothing isn't used,
8320 source->SetTimerFrequency() can't be called with whatever timeout
8321 we like and have it migrrate back to the user-specified time. so
8322 change 0 to current_time.
8323 (TimeManager::NeedClockTick): same.
8324 (TimeManager::AddTickCall): same.
8325 (TimeManager::SourceTick): remove the #if'ed out version with
8326 clock smoothing, and add back in the stuff to put the time manager
8327 to sleep (currently ifdef'ed out still)
8328 (TimeManager::AddClock): move the logic to delay the root clock
8329 group here out of Storyboard::Begin. This is because we also want
8330 to do this with DispatcherTimers as well. Given that there is no
8331 TimeManager::GetRootClock anymore, this is the only api to add
8334 2009-04-22 Jeffrey Stedfast <fejj@novell.com>
8336 * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
8337 the 'in' ptr to inend.
8339 * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
8341 2009-04-22 Rusty Howell <rhowell@novell.com>
8343 * building libmoonxpi for the FF plugin
8345 2009-04-21 Chris Toshok <toshok@ximian.com>
8348 (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
8349 but hopefully worth the hotspot reduction. do fast checks to see
8350 if we're even dealing with a property that's inheritable first.
8351 cache the Types* pointer instead of indirectly fetching it
8352 repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
8355 2009-04-21 Jeffrey Stedfast <fejj@novell.com>
8357 * glyphs.cpp (Layout): Fixed scaling calculation.
8359 * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
8360 and LayoutWrap. The different word-wrapping behaviors are, as
8361 before, handled in different subroutines but the outer loops are
8364 2009-04-20 Jeffrey Stedfast <fejj@novell.com>
8366 * textblock.cpp (SetTextInternal): Don't break the string into
8367 multiple inlines, Silverlight shoves the entire string into a
8368 single Run no matter what.
8369 (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
8370 character instead of \n to match Silverlight behavior.
8372 * layout.cpp: Fixed various loops and checks to properly handle
8373 any type of unicode line-breaking character.
8375 2009-04-21 Alan McGovern <amcgovern@novell.com>
8377 * collection.h: HitTestCollection should override
8378 RemovedFromCollection the same way it overrides
8379 AddedToCollection so that items added/removed from the
8380 collection are not reparented.
8382 2009-04-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
8384 * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
8386 2009-04-20 Chris Toshok <toshok@ximian.com>
8388 * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
8389 this method. Also, don't multiply to compute localTime only to
8390 turn around and divide to compute normalizedTime. normalizedTime
8391 is always the factor we multiply natural_duration_timespan by.
8393 2009-04-20 Chris Toshok <toshok@ximian.com>
8395 * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
8396 textblock autocreator here, and stop using TextBlock vs. Control
8397 for the font size names, as both textblock and controls have the
8398 varying font size. There's also no reason to make them public
8399 anymore. if you want the font size, just call GetFontSize().
8401 * control.h: FontSize uses an autocreator now, and remove the
8404 * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
8405 of the #define, and while we're at it just replace the other
8406 defines with calls to the getters too.
8408 * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
8409 now), and the #define for font_size.
8411 * dependencyproperty.g.cpp: regen.
8413 2009-04-20 Chris Toshok <toshok@ximian.com>
8415 * security.c (security_enable_coreclr): version the
8416 MOON_DISABLE_SECURITY variable.
8418 2009-04-20 Jeffrey Stedfast <fejj@novell.com>
8420 * textblock.cpp (TextBlock): Removed cached TextFontDescription
8421 since it's only ever used in 1 place and even then it's a corner
8424 2009-04-20 Chris Toshok <toshok@ximian.com>
8426 * timeline.cpp: fix up DispatcherTimers after I broke them by
8427 removing the clock event.
8429 2009-04-19 Chris Toshok <toshok@ximian.com>
8431 * eventargs.h|.cpp: add RenderingEventArgs type.
8433 * timemanager.cpp (TimeManager::SourceTick): the render event
8434 takes a RenderEventArgs, even though the type of the event is
8435 EventHandler. Goes a long way toward fixing DRT #394 and fixes
8438 * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
8441 2009-04-19 Chris Toshok <toshok@ximian.com>
8443 * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
8444 default for the various shapes (Fill if a rectangle or ellipse,
8445 None for all other types). Fixes part of DRT #508.
8446 (Rectangle::Rectangle): don't set the default value as a local
8448 (Ellipse::Ellipse): same.
8450 2009-04-19 Jeffrey Stedfast <fejj@novell.com>
8452 * textblock.cpp (DefaultFontSize): New function to get the default
8453 font size for a TextBlock (or Inline) based on the Silverlight
8454 context (XAP vs XAML).
8456 2009-04-19 Chris Toshok <toshok@ximian.com>
8458 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8459 inlines inherit their Language from the textblock, and textblocks
8460 inherit it from frameworkelements. part of fix for drt #952.
8462 2009-04-18 Chris Toshok <toshok@ximian.com>
8464 * clock.h|.cpp: move to the holy grail of a functional clock
8465 setup. this removes Clock::Tick and related additive machinery
8466 that introduces errors into various calculations. instead we use
8467 the fact that a child's time can be expressed as a function of its
8468 parent's time. more calculation per-frame, perhaps, but less
8469 problems wrt inflection points like autoreverse/repeat points.
8470 This removes *tons* of difficult to read and impossible to
8471 understand code, and brings clocks and clockgroups a lot closer.
8472 Docs coming soon to a source file near you.
8474 * timeline.h|.cpp: various clock-related changes. 2 notables are
8475 the fact that all Timelines have a completed event now instead of
8476 just storyboards (because Clocks are also emitting completed now,
8477 not just ClockGroups), and DispatcherTimers now subclass from
8478 Timeline instead of TimelineGroup. We also use a virtual method
8479 instead of an event handler for ticking DispatcherTimers.
8481 * animation.h|.cpp: more clock fallout. Also, rewrite
8482 HookupAnimationsRecurse so that we propagate the current
8483 target/property as parameters instead of requiring a search back
8484 up the tree at ever level.
8486 * timemanager.cpp: more clock rewrite stuff. Set the surface
8487 clockgroup's duration to forever instead of automatic, and switch
8488 from ->Tick to ->UpdateFromParentTime.
8490 * multiscaleimage.cpp: track changes to storyboard api (basically
8491 i removed the non-WithError methods.. maybe i should put them
8494 * cbinding.h|.cpp, type-generated.cpp: regen.
8496 2009-04-17 Jeffrey Stedfast <fejj@novell.com>
8498 * glyphs.cpp (Layout): Pass our StyleSimulations along to
8499 GetGlyphInfo() so that we can simulate Bold or Italics as the user
8502 * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
8503 argument (which defaults to None). Adjust the glyph for Bold
8504 and/or Italics if requested.
8505 (TextFont::GetGlyphInfo): Now takes a StyleSimulations
8506 argument (which defaults to None). When looking up the glyph in
8507 the cache, make sure that the simulations also match. When loading
8508 a new glyph, pass along the StyleSimulations.
8510 2009-04-17 Larry Ewing <lewing@novell.com>
8512 * runtime.cpp (Surface): remove references to removed variable.
8514 2009-04-17 Chris Toshok <toshok@ximian.com>
8516 * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
8517 getter/setter here, and move XapLocation from surface to here.
8519 * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
8521 * downloader.cpp: use Deployment::GetXapLocation
8523 * cbinding.h|chinding.cpp: regen.
8525 2009-04-17 Jeffrey Stedfast <fejj@novell.com>
8527 * font.h: Changed the glyph cache size to be #defined rather than
8528 hard-coded everywhere.
8530 2009-04-17 Jackson Harper <jackson@ximian.com>
8532 * xaml.cpp: When we are setting the Name property use the same
8533 trick we are using for setting the x:Name property. Grabbing the
8534 parent element and making sure we get registered in that
8535 namescope. This isn't perfect, but should fix 95% of the managed
8538 2009-04-17 Alan McGovern <amcgovern@novell.com>
8541 * type-generated.cpp: Correctly mark Popup.Child as its
8544 2009-04-17 Geoff Norton <gnorton@novell.com>
8546 * media.cpp: Ensure that we invalidate the image if the
8547 BitmapImage has already been parsed (like from a SetSource call)
8549 2009-04-17 Geoff Norton <gnorton@novell.com>
8551 * error.cpp: Image errors use the code 4001, fixes #97
8553 2009-04-16 Jeffrey Stedfast <fejj@novell.com>
8555 * glyphs.cpp (Layout): Don't bail if we have something other than
8556 StyleSimulationsNone.
8558 * enums.h (enum StyleSimulations): Added Bold, Italic, and
8561 2009-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
8563 * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
8564 already unref them upon destruction.
8566 2009-04-16 Jeffrey Stedfast <fejj@novell.com>
8568 * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
8569 of our inlines' fonts have changed - if they all override the font
8570 family, then there's no need to redraw.
8572 2009-04-16 Jackson Harper <jackson@ximian.com>
8574 * dependencyobject.cpp: Unregister the old name when we set an
8577 2009-04-16 Sebastien Pouliot <sebastien@ximian.com>
8579 * openfile.cpp|h: Add a dialog requester to increase isolated
8580 storage quota. Add function to recursively compute the total size
8581 of a directory, which is used to check quota in IS.
8583 2009-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
8585 * deployment.cpp: mono_gc_invoke_finalizers may cause the
8586 current appdomain to change, so restore it afterwards. Fixes
8587 a rare, random crash upon shutdown.
8589 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
8591 * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
8592 invalidating the TextBoxBase, we need to emit an event to let the
8593 TextBoxView know our font has changed.
8594 (TextBoxView::OnModelChanged): Reset state on the layout when the
8595 font changes (since it has no way of knowing that the font has
8598 * textblock.cpp (Inline::UpdateFontDescription): Return true if
8599 the font has changed or false otherwise.
8600 (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
8601 return true and reset the state on the TextLayout.
8603 * font.cpp (TextFontDescription::Set*): Return true if the font
8604 has changed or false otherwise.
8606 * layout.cpp (TextLayout::ResetState): New method to reset the
8607 state of a TextLayout. Normally the state only gets reset if a
8608 layout property chanegs, but sometimes it is necessary to notify
8609 the TextLayout engine of a state change in one of the
8610 TextLayoutAttributes.
8612 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
8614 * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
8615 xap resource, download it from the web.
8617 * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
8618 resource, download it from the web.
8620 2009-04-15 Larry Ewing <lewing@novell.com>
8622 * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
8625 2009-04-15 Jeffrey Stedfast <fejj@novell.com>
8627 * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
8628 glib until 2.10, so so guard to allow building on systems with
8629 older versions of glib. Also merged BREAK_NEXT_LINE and
8630 BREAK_UNKNOWN into the BREAK_AFTER group.
8632 2009-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
8634 * runtime.cpp: Don't support versions of the type "1.0..0".
8635 Fixes a test case in MS DRT #21.
8637 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
8639 * downloader.cpp (Downloader::Open): fix the argument passed to
8642 2009-04-15 Alan McGovern <amcgovern@novell.com>
8644 * utils.cpp: We need to increment the pointer otherwise we
8647 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
8649 * downloader.cpp (Downloader::Open): make the relative uris relative to
8651 (check_redirection_policy, Downloader::Write): don't use
8652 uri->originalString, but uri->ToString ()
8654 2009-04-15 Stephane Delcroix <sdelcroix@novell.com>
8656 * runtime.h|cpp (Surface): xap_location, Get() and Set()
8658 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8660 * layout.cpp (layout_word_wrap): Fixed word-break logic for
8661 ambiguous break-types. Fixes second column of text in test #208.
8663 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8665 * layout.cpp (layout_word_wrap): Fixed word-breaking around a
8666 BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
8668 2009-04-14 Stephane Delcroix <sdelcroix@novell.com>
8670 * deepzoomimagetilesource.h: expose IsDownloaded()
8671 * multiscaleimage.cpp: download the tile source for the subimage before
8672 downloading the un-shared tiles.
8674 2009-04-14 Andreia Gaita <avidigal@novell.com>
8676 * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
8677 indicates frame could not be decoded. fixes uninitialized buffer
8678 size leading to huge memory allocation and abort. kudos to
8679 Alp Toker for spotting this.
8681 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8683 * layout.cpp (layout_word_wrap): Added support for Hangul and
8684 ideographic word breaking. Improves test #208 quite a bit.
8686 2009-04-14 Larry Ewing <lewing@novell.com>
8689 * control.cpp (InsideObject): always return fals controls don't
8690 handle the testing. Fixes MSI navigation in
8691 http://playboy.covertocover.com/
8694 * panel.cpp: remove HitTest stubs.
8696 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8698 * layout.cpp (layout_word_wrap): Added logic to for breaking after
8699 more break-types including BREAK_AFTER, BREAK_HYPHEN, and
8700 BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
8701 behavior on test #206.
8703 2009-04-14 Jeffrey Stedfast <fejj@novell.com>
8705 * layout.cpp (utf8_strlen): Removed, this has never been sued.
8706 (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
8707 no longer has this wrapping bug.
8708 (layout_word_wrap): Don't need to check if we're at the last word
8709 in the textblock because Silverlight 2.0 fixed this bug.
8710 (FindLastWord): Removed, no longer needed.
8712 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
8715 * playlist.cpp: Don't try to open the media if an error has
8718 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
8722 * mediaelement.cpp: Check for markers with a timeout instead
8723 of after rendering a frame, this way markers also work with
8726 2009-04-14 Jackson Harper <jackson@ximian.com>
8728 * dependencyobject.cpp|h: Add a return value for SetName with
8729 namescope, returns false if there is an error.
8730 * xaml.cpp: Check the return value of SetName
8732 2009-04-14 Stephane Delcroix <sdelcroix@novell.com>
8734 * uri.cpp (Combine): strip leading ../ as we're already cutting the
8735 filename off the base uri
8737 2009-04-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
8755 * timemanager.cpp: Added @GeneratePInvoke to all methods used
8756 in managed code. For C++ methods also generate the
8757 corresponding C method.
8760 * cbinding.cpp: Regenerated.
8762 2009-04-13 Jeffrey Stedfast <fejj@novell.com>
8764 * textblock.cpp (SetFontResource): If we cannot get the resource
8765 from within the xap, then we need to spawn a downloader to fetch
8768 2009-04-13 Geoff Norton <gnorton@novell.com>
8770 * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
8773 2009-04-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
8777 2009-04-12 Jeffrey Stedfast <fejj@novell.com>
8779 * debug.cpp (hexdump_addr): New function to help toshok print a
8780 hexdump of memory from gdb.
8782 * textbox.cpp (TextBoxBase::SetFontResource): Set the font
8783 filename/guid based on the resource provided.
8784 (TextBoxBase::OnPropertyChanged): If a font resource is named in
8785 the FontFamily property, then call SetFontResource() with the
8786 provided resource name.
8787 (TextBox::ClearFontSource): Clear the FontSourceProperty.
8788 (PasswordBox::ClearFontSource): Same.
8790 2009-04-11 Chris Toshok <toshok@ximian.com>
8792 * provider.h|.cpp, dependencyobject.cpp: get rid of
8793 PropertyPrecedence_Animation and the associated provider. in SL,
8794 animations are considered local values (and a choir of angels was
8795 heard moaning as they fell on their swords).
8797 2009-04-11 Jeffrey Stedfast <fejj@novell.com>
8799 * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
8800 FT_Streams and setup their own FT_Open_Args instead. This solves
8801 the crasher problems in the silverlight2 test harness.
8803 * textblock.cpp (Inline::SetFontResource): New method to update
8804 our FontFilenameProperty and FontGUIDProperties.
8805 (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
8806 that reference a resource.
8807 (Inline::UpdateFontDescription): Parse out the family name from
8808 the FontFamily::Source.
8810 2009-04-11 Jeffrey Stedfast <fejj@novell.com>
8812 * textblock.cpp (TextBlock::SetFontResource): Renamed from
8813 SetFontSource() to be more accurate.
8815 * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
8816 fail. This is probably what was causing the crash on
8819 * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
8820 than a string and returns a bool argument hinting at whether we
8822 (OnPropertyChanged): Only fall back on creating a downloader for
8823 the font if the uri is not a resource.
8825 2009-04-11 Jackson Harper <jackson@ximian.com>
8827 * xaml.cpp: If we are hydrating we don't need the extra ref.
8829 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
8831 * uri.cpp (ToString): Made to accept const Uri*
8833 * textblock.cpp (SetFontSource): Parse the resource string into a
8834 Uri and pass that along to GetResourceAsPath().
8836 * glyphs.cpp (SetFontResource): Parse the resource string into a
8837 Uri and pass that along to GetResourceAsPath().
8839 * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
8842 * application.cpp (GetResource): Oops, this really does need a Uri
8844 (GetResourceAsPath): Use a Uri here too, and convert any ';' into
8847 2009-04-10 Jackson Harper <jackson@ximian.com>
8849 * xaml.cpp: Let the XamlElementInstances cleanup their Values.
8851 2009-04-10 Chris Toshok <toshok@ximian.com>
8853 * timemanager.cpp (TimeManager::SourceTick): just for kicks
8854 completely rip out the clock smoothing code, and also emit all
8855 tick calls (don't worry about how much time we're taking in them).
8856 Lastly, emit tick calls *before* rendering. we need to do this or
8857 else the Loaded event won't be posted before we draw (when we
8858 delay the loaded event, that is.) which leads to a great many
8859 VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
8860 flag for the initial children z-sorting.
8862 * collection.cpp (VisualTreeWalker::Step): add a special case for
8863 collection::count == index == 1, which is what we end up with on
8864 uielement's with a subobject. it won't be a collection child of a
8865 panel, so it'll never be z-sorted, but since it's only 1 element
8866 it doesn't need to be anyway.
8868 * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
8869 to Panel. Also, move the ZIndex OnCollectionItemChanged code into
8872 * panel.h|.cpp: remove a couple of unused
8873 decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
8876 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
8878 * font.cpp (OpenFaceByIndex): New helper function split out from
8879 FontFace::LoadFontFace() which performs the FT_Open_Face() and
8880 family name matching.
8881 (OpenFaceByFamily): If we don't have an index, this function opens
8882 all faces in the file and finds a matching font face based on
8884 (LoadFontFace): Use our new helper functions.
8886 * textblock.cpp (SetFontSource): On fail, set the font filename to
8887 NULL and call UpdateFontDescriptions() no matter what.
8889 * font.cpp (UnsetFields): Allow unsetting of the font index.
8890 (Merge): Merge the index separately.
8891 (SetIndex): Set/unset the FontMaskIndex bit.
8893 * glyphs.cpp (SetFontResource): New internal method to set a font
8895 (OnPropertyChanged): Handle non-absolute Uris as resource streams.
8897 2009-04-10 Larry Ewing <lewing@novell.com>
8899 * multiscaleimage.cpp: add a translucency check before calling
8900 cairo_paint_with_alpha.
8902 2009-04-10 Jeffrey Stedfast <fejj@novell.com>a
8904 * textblock.cpp (SetFontSource): New method for setting a font
8905 source via a resource name.
8906 (OnPropertyChanged): When the FontFamily changes, parse out the
8907 resource name (if it exists) and set that as our font source.
8909 * bitmapimage.cpp (UriSourceChanged): Updated.
8911 * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
8913 * application.cpp (GetResourceAsPath): New helper method to get a
8914 specified resource as a filesystem path.
8915 (GetResource): Now takes a resource name rather than a Uri.
8917 * utils.cpp (CanonicalizeFilename): New function to canonicalize a
8919 (ExtractAll): New helper function to extract all files from a zip
8920 archive into a specified directory.
8922 2009-04-10 Jeffrey Stedfast <fejj@novell.com>
8924 * textblock.cpp (CleanupDownloader): New helper method.
8925 (SetFontSource): Use CleanupDownloader() and also clear the
8926 FontSourceProperty since this will override that source.
8927 (OnPropertyChanged): Parse the FontFamily name.
8928 (DownloaderComplete): Use SetValue() correctly.
8930 * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
8933 2009-04-10 Sebastien Pouliot <sebastien@ximian.com>
8935 * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
8936 all coreclr-related code from being compiled.
8938 2009-04-09 Chris Toshok <toshok@ximian.com>
8940 * uielement.cpp (UIElement::WalkTreeForLoaded): be more
8941 descriptive with the "attempting to use a null application" thing.
8943 * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
8944 that were missing. we need to make this less fragile, and have it
8945 use the event strings in type-generated.cpp.
8946 (end_element_handler): add more text to the line about attempting
8947 to use a null application, so we can differentiate it from the
8950 * timeline.h (class Timeline): BeginTime has, in fact, a default
8953 * dependencyproperty.g.cpp: regen.
8955 2009-04-09 Jeffrey Stedfast <fejj@novell.com>
8957 * textblock.h, textbox.h: Added FontSourceProperty.
8959 * value.cpp|h: Added FontSource support.
8961 * fontsource.h: Added.
8963 2009-04-09 Sebastien Pouliot <sebastien@ximian.com>
8965 * cbinding.cpp|h: regenerated
8966 * openfile.cpp|h: Add save_file_dialog_show to implement
8967 SaveFileDialog (SL3) and refactor the filter code to be shared.
8968 * runtime.cpp|h: Rename can_full_screen to user_initiated_event
8969 since we need it for SaveFileDialog (and elsewhere too). Rename
8970 setter and add a getter with a c binding.
8972 2009-04-09 Jackson Harper <jackson@ximian.com>
8974 * xaml.cpp|h: We need to create Value*'s from strings/files now
8975 instead of just creating dependencyobjects, it's legal to create a
8976 managed object from xaml that isn't a DOB.
8977 - Add a couple utility methods for creating just DOBs from
8979 * cbinding.cpp: regen
8982 * runtime.cpp: Updated method names
8984 2009-04-08 Geoff Norton <gnorton@novell.com>
8986 * downloader.cpp: Ensure that when someone subscribes to NotifySize
8987 they actually will get notified of the size.
8989 2009-04-08 Geoff Norton <gnorton@novell.com>
8991 * glyphs.cpp: Ensure we dont pass an unitialized pointer to
8992 TextFontDescription::SetFilename
8994 2009-04-08 Andreia Gaita <avidigal@novell.com>
8996 * dependencyobject.cpp: enable toggleref
8997 conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
8999 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
9001 * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
9002 isn't a .odttf file.
9004 2009-04-08 Geoff Norton <gnorton@novell.com>
9006 * pipeline.cpp: Ensure we dont try to decode if our stream has been
9009 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
9011 * downloader.cpp (validate_policy): Don't delete source here, we
9014 * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
9015 the file extension is .odttf. Also no need to stat() anymore.
9017 * textblock.cpp (DownloaderComplete): Same.
9019 2009-04-08 Jeffrey Stedfast <fejj@novell.com>
9021 * provider.cpp (InheritedPropertyValueProvider): We need to
9022 inherit FontGUIDProperty for Inlines as well.
9024 * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
9025 deobfuscation features.
9027 * glyphs.cpp (DownloaderCompleted): Don't need to call
9028 downloader_deobfuscate_font() anymore. We only need to get the
9029 GUID to set on the FontDescription.
9031 * textblock.cpp (DownloaderCompleted): Same.
9033 * font.cpp: Implemented our own FT_Stream that can handle reading
9034 obfuscated fonts directly without the need to rewrite the file
9036 (TextFontDescription): Now has a GUID property for Glyphs and
9039 * downloader.cpp: Fixed to autogenerate the accessors and changed
9040 the UriProperty type to a Uri to be consistent with other classes.
9041 (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
9043 2009-04-08 Geoff Norton <gnorton@novell.com>
9045 * deployment.cpp: Ensure that we restore to the current MonoDomain
9046 after creating a new deployment.
9048 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
9050 * multiscaleimage.h|cpp: Set IsDownloading property according to the
9051 status of the downloaders
9053 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
9055 * multiscaleimage.cpp (MultiScaleImage::RenderSingle,
9056 MultiScaleImage::RenderCollection): do not start any new download if
9057 AllowDownlodingProperty is false.
9059 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
9061 * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
9063 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
9065 * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
9068 2009-04-08 Stephane Delcroix <sdelcroix@novell.com>
9070 * multiscaleimage.cpp: some additional debug info printing the state of
9073 2009-04-07 Chris Toshok <toshok@ximian.com>
9075 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9076 almost had it that last time. In the case where the parent has
9077 that property, use GetValue on it instead of ReadLocalValue, which
9078 won't pick up styles.
9080 2009-04-07 Chris Toshok <toshok@ximian.com>
9082 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9083 rewrite this substantially to make it work correctly and be more
9084 efficient. we no longer look up the hierarchy for properties
9085 which aren't inheritable, and we only loop up the visual tree, not
9086 the logical one (since that has issues when it comes to
9088 (get_parent): nuke, it was a broken way to deal with parents.
9090 2009-04-07 Chris Toshok <toshok@ximian.com>
9092 * uielement.h|.cpp (class UIElement): scrap that ill-advised
9093 AutoCreator crap. it's much simpler. the default is actually
9094 NULL, and the managed layer does the stupid mapping from NULL to
9095 new MatrixTransform.
9097 2009-04-07 Chris Toshok <toshok@ximian.com>
9099 * uielement.h|.cpp (class UIElement): use an AutoCreator for
9100 RenderTransformProperty.
9102 * dependencyproperty.g.cpp: regen.
9104 2009-04-07 Larry Ewing <lewing@novell.com>
9106 * grid.cpp (MeasureOverride): use the star fraction of the
9107 available size when measuring.
9109 * border.cpp: restrict the return value to available size.
9111 2009-04-07 Geoff Norton <gnorton@novell.com>
9113 * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
9114 to the media thread from any thread. Fixes seeking on SmoothHD
9117 2009-04-07 Geoff Norton <gnorton@novell.com>
9119 * bitmapimage.cpp|h: Ensure we stop getting events from any
9120 active downloaders once we're disposed.
9121 * brush.cpp|h: Ensure we stop getting events from any
9122 active BitmapImages once we're disposed.
9124 2009-04-07 Jeffrey Stedfast <fejj@novell.com>
9126 * glyphs.cpp (CleanupDownloader): New helper method.
9127 (DownloadFont): Don't delete the uri after we're done, we do not
9129 (OnPropertyChanged): Use Uri::IsNullOrEmpty().
9131 2009-04-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
9133 * runtime.cpp: layers is an EventObject, unref instead of
9136 * collection.h: Have a protected dtor so that nobody can
9137 delete this class directly ever again.
9139 2009-04-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
9141 * runtime.cpp: Add a few null checks.
9143 2009-04-07 Stephane Delcroix <sdelcroix@novell.com>
9145 * application.cpp: uri->ToString() allocates memory, free it after
9148 2009-04-06 Chris Toshok <toshok@ximian.com>
9150 * runtime.cpp|.h (Surface::Attach): split this method effectively
9151 in half: stuff we do before the loaded events are fired, and stuff
9152 we do after. The second half is in Surface::ToplevelLoaded. This
9153 fixes playboy.covertocover.com coming up, as the alert that
9154 vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
9155 to screw with our async events.
9157 2009-04-06 Chris Toshok <toshok@ximian.com>
9159 * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
9160 flesh this method out some. I don't like the walks we have to do
9161 here. Also, rename this to *WithError so we can report the error
9162 back to managed land from here instead of doing it in C#.
9164 * cbinding.cpp|.h: regen.
9166 2009-04-06 Chris Toshok <toshok@ximian.com>
9168 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9169 in case we didn't notify listeners, output the moon error if there
9172 2009-04-06 Chris Toshok <toshok@ximian.com>
9174 * xaml.cpp (value_from_str): quiet spew (which in this case
9175 indicates an error when there isn't one.)
9177 2009-04-06 Chris Toshok <toshok@ximian.com>
9179 * brush.h: include imagesource.h, not bitmapimage.h
9181 * brush.cpp: include bitmapimage.h here.
9183 2009-04-06 Geoff Norton <gnorton@novell.com>
9185 * bitmapimage.cpp: Stop leaking the resource here.
9187 2009-04-06 Geoff Norton <gnorton@novell.com>
9189 * codec-version.h.in: Bump
9191 2009-04-06 Geoff Norton <gnorton@novell.com>
9193 * application.cpp: We want ToString here, not just the path of the
9195 * bitmapimage.cpp|h: We need to do this async, since the events
9196 might be registered in managed code before a yield.
9198 2009-04-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
9200 * security.c: Add jtr.dll to the list of platform assemblies,
9201 it's an assembly used by managed tests which contains unsafe
9202 code and pinvoke methods.
9204 2009-04-06 Stephane Delcroix <sdelcroix@novell.com>
9206 * multiscaleimage.h: ad the 3.0 DPs and property accessors
9208 2009-04-05 Chris Toshok <toshok@ximian.com>
9210 * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
9211 managed subclasses can register a delegate.
9213 * cbinding.cpp|.h: regen.
9215 2009-04-04 Geoff Norton <gnorton@novell.com>
9217 * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
9219 2009-04-04 Geoff Norton <gnorton@novell.com>
9221 * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
9223 2009-04-04 Geoff Norton <gnorton@novell.com>
9225 * media.h: Removed unused define
9226 * mediaplayer.cpp|h: We need to support RGBA video formats now, so
9227 lets track what the decoder is giving us (pass-thru is the only decoder
9228 which will provide RGBA from MSS, we still pass around yuv and rgb
9229 internally). If the format is RGBA we have to incur a one-frame penalty
9230 to recreate our cairo surfaces.
9231 * pipeline.cpp|h: Support RGBA pixel formats. Don't support RGB from
9232 MediaStreamSource. Mark the pass-thru frames as decoded.
9234 2009-04-04 Chris Toshok <toshok@ximian.com>
9236 * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
9238 * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
9239 cbinding.h|.cpp: regen.
9241 2009-04-03 Chris Toshok <toshok@ximian.com>
9243 * animation.h: add EasingFunctionProperty to
9244 Color/Double/PointAnimation.
9246 * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
9247 easing function, apply it to progress.
9248 (ColorAnimation::GetCurrentValue): if there's an easing function,
9249 apply it to progress.
9250 (PointAnimation::GetCurrentValue): if there's an easing function,
9251 apply it to progress.
9253 * easing.h, easing.cpp: implementations of all the easing
9254 functions. still missing are BounceEase and ElasticEase.
9256 * enums.h, enums.cpp (enum EasingMode): new enum.
9258 * Makefile.am: add easing.h/easing.cpp
9260 * type.h, type-generated.cpp, cbinding.h|.cpp,
9261 dependencyproperty.g.cpp, value.h: regen.
9263 2009-04-03 Geoff Norton <gnorton@novell.com>
9265 * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
9266 which renders garbage on the screen on amd64.
9268 2009-04-03 Aaron Bockover <abockover@novell.com>
9272 * dependencyproperty.g.cpp:
9273 * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
9274 by Moonlight.Gtk.XamlHost
9276 2009-04-03 Larry Ewing <lewing@novell.com>
9279 * popup.cpp: Make sure that we hide any active layers when Child
9280 changes and that we show any new ones. Fixes part of
9281 PopupExample2. Give IsOpen a default value.
9285 2009-04-03 Chris Toshok <toshok@ximian.com>
9287 * animation.h: remove a couple of ancient (and unused) method and
9288 function declarations, and re-order
9289 public/private/protected (seriously, this makes my eyes bleed.)
9290 Also move the "internal classes" to the end.
9292 2009-04-03 Chris Toshok <toshok@ximian.com>
9294 * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
9295 since that's for compatability with 1.0, which we no longer are.
9297 2009-04-03 Alan McGovern <amcgovern@novell.com>
9299 * textbox.h: TextBox does validation in both the getter and
9300 setter of its TextProperty, so we have to manually implement
9303 2009-04-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
9305 * security.c: Include "config.h" to get
9306 MONO_ENABLE_CORECLR_SECURITY.
9308 2009-04-02 Aaron Bockover <abockover@novell.com>
9310 Do not build code that requires Mono 2.5 or better in the case where
9311 we want Moonlight to run only in an embedded desktop app scenario; in
9312 this case, CoreCLR security and non-default app domains are not needed
9314 * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
9315 is not defined, this function is now a noop
9317 * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
9318 not implement app domain loading/unloading; factor out all common init
9319 code that was duplicated in both ctors into InnerConstructor
9321 * deployment.h: Define InnerConstructor
9323 2009-04-02 Larry Ewing <lewing@novell.com>
9326 * uielement.cpp: move the bulk of the paint ftb logic from surface
9327 to here since we will be using this in more places. Make some of
9328 the ftb logic protected now.
9331 * writeablebitmap.h:
9332 * writeablebitmap.cpp: Land Geoff's initial Render implementation
9337 2009-04-02 Larry Ewing <lewing@novell.com>
9341 * runtime.cpp: Treat full_screen_message as another layer. Make
9342 sure that we mark layers as loaded. Popups should render now.
9344 2009-04-02 Alan McGovern <amcgovern@novell.com>
9346 * runtime.cpp: the real toplevel element must always be at
9347 position 0 in the layers list. Fixes the situation where we
9348 open a popup before setting attaching the surface.
9350 2009-04-02 Stephane Delcroix <sdelcroix@novell.com>
9352 * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
9353 linear animation, animate for 4 secs instead of .4, use steep spline
9354 to start fast finish smoothly. For botn panning and zooming.
9356 2009-04-02 Alan McGovern <amcgovern@novell.com>
9360 * dependencyproperty.g.cpp: The Child property has similar
9361 validation to a ContentControl. Fixes three tests.
9363 2009-04-02 Alan McGovern <amcgovern@novell.com>
9372 * dependencyproperty.g.cpp: Popups are treated as top level
9373 elements which are rendered on top of all other elements. To
9374 handle this a list of all toplevel elements (layers) is kept
9375 in the surface. Mouse events are captured within a toplevel
9376 element and not visible to other toplevel elements.
9378 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
9380 * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
9381 not to the center of the control
9383 2009-04-01 Andreia Gaita <avidigal@novell.com>
9385 * window-gtk.cpp: Only connect the scroll-event signal if we're
9386 not running on the desktop (otherwise, gecko won't get the
9389 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
9391 * uri.h: no longer expose GetOriginalString(), it leads to buggy
9394 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
9398 * deepzoomimagetilesource.cpp: g_free the memory allocated by
9401 2009-04-01 Chris Toshok <toshok@ximian.com>
9403 * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
9404 the (desktop extension -ized) button check here. this wouldn't be
9405 necessary if the plugin could insert its signal handler before the
9406 window's, but alas, gtk...
9408 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
9410 * application.cpp (GetResource): use the uri path, not
9413 2009-04-01 Jeffrey Stedfast <fejj@novell.com>
9415 * expression.cpp|h: Removed from the build.
9416 not running on the desktop (otherwise, gecko won't get the
9419 2009-04-01 Chris Toshok <toshok@ximian.com>
9421 * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
9422 extensions are turned on, allow button 3 (right mouse).
9423 (Surface::HandleUIButtonPress): same.
9425 * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
9426 non-button 1 presses here.
9428 2009-04-01 Chris Toshok <toshok@ximian.com>
9430 * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
9431 sign here so we have the same behavior that lutz's demo expects
9434 2009-04-01 Geoff Norton <gnorton@novell.com>
9436 * uri.cpp|h: Add IsNullOrEmpty
9437 * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
9439 2009-04-01 Geoff Norton <gnorton@novell.com>
9441 * bitmapimage.cpp: Ensure we deregister the events too.
9443 2009-04-01 Geoff Norton <gnorton@novell.com>
9445 * bitmapimage.cpp: If the UriSource is changed, then we should abort
9446 and clean up any existing downloaders.
9448 2009-04-01 Geoff Norton <gnorton@novell.com>
9450 * brush.cpp: ImageSource is a nullable property so we need to new
9451 one up here if we dont have one already.
9453 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
9455 * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
9456 and creating cairo surfaces.
9458 2009-04-01 Stephane Delcroix <sdelcroix@novell.com>
9460 * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
9463 2009-04-01 Chris Toshok <toshok@ximian.com>
9465 * uielement.h (class UIElement): add
9466 MouseRightButton{Down,Up}Event and MouseWheelEvent.
9468 * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
9470 (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
9472 * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
9474 * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
9476 (MoonWindowGtk::EnableEvents): connect the scroll-event.
9477 (MoonWindowGtk::InitializeCommon): if desktop extensions are
9478 enabled, add GDK_SCROLL_MASK.
9480 * xaml.cpp (xaml_is_valid_event_name): if we're running with
9481 desktop extensions, expose the right button events and mouse
9484 * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
9486 2009-03-31 Jeffrey Stedfast <fejj@novell.com>
9488 * enums.h: Well what do ya know... TextWrapping enum wasn't the
9489 same as the TextWrapping.cs enum, this is likely the case of some
9490 text layout wonkyness.
9492 * textblock.cpp (TextBlock::MeasureOverride): Set the
9493 ActualWidth/Height DP values here after calling Layout(), this
9494 seems to be what Silverlight does (can't be set in FWE::Measure()
9495 because it doesn't have the actual extents, it just has the
9496 desiredSize). Also don't reset dirty back to true after laying out
9498 (TextBlock::Layout): Restructured slightly.
9500 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
9502 * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
9503 originalstrings aren't updated on Uri::Combine ().
9505 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
9507 * bitmapimage.h: Set a DefaultValue for ProgressProperty
9509 2009-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
9511 * src.mdp: Updated some project files.
9513 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
9515 * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages
9518 2009-03-31 Stephane Delcroix <sdelcroix@novell.com>
9520 * multiscaleimage.h|.cpp: remove the AddTickCall workaround for
9521 the race while emitting ImageOpenSucceded. Test if the source is
9522 a deepzoom before casting (avoid g_warnings on the console). Change a
9525 2009-03-30 Chris Toshok <toshok@ximian.com>
9527 * timemanager.cpp|.h: split this out from clock.cpp|.h
9529 * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
9530 libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
9531 timeline.cpp, uielement.cpp: track the above change.
9533 * Makefile.am: add timemanager.cpp|.h
9535 * cbinding.h, type-generated.cpp: regen
9537 2009-03-30 Geoff Norton <gnorton@novell.com>
9539 * bitmapsource.cpp: When caching a native surface ensure we dont
9540 destroy it on every GetSurface pass, but we do clean it up in
9543 2009-03-30 Chris Toshok <toshok@ximian.com>
9545 * application.h, border.h, contentcontrol.h, control.h,
9546 cornerradius.h, deployment.h, expression.h, frameworkelement.h,
9547 grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
9548 transform.h, type.h, usercontrol.h: remove @SilverlightVersion
9549 metadata attributes.
9552 2009-03-30 Chris Toshok <toshok@ximian.com>
9554 * downloader.h: add pinvokes for a few of the downloader_* C
9557 * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
9558 AddTickCall, and remove the manual implementation.
9560 * dependencyobject.h (class EventObject): add a PInvoke for
9561 event_object_get_surface.
9563 * cbinding.h, cbinding.cpp: regen
9565 2009-03-30 Sebastien Pouliot <sebastien@ximian.com>
9567 * security.c: Ensure mono_assembly_setrootdir is always called
9568 while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
9569 variable and the availability of a platform directory.
9571 2009-03-30 Geoff Norton <gnorton@novell.com>
9573 * brush.h: Brush.ImageSource is stupid, and of course not consistent
9575 * bitmapimage.cpp: Nuke some debug spew.
9576 * dependencyproperty.g.cpp: Funky cold medina.
9578 2009-03-30 Larry Ewing <lewing@novell.com>
9580 * brush.cpp (OnPropertyChanged): check for the right property and
9581 fixup a harmless typo.
9583 * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
9585 2009-03-30 Jeffrey Stedfast <fejj@novell.com>
9587 * font.cpp (FontFace::GetExtents): Instead of calculating our
9588 ascent/descent and height values from 2 different ways, calculate
9589 ascent/descent the same way we calculated height. This seems to
9590 give slightly more accurate results (previous logic rounded up to
9591 the nearest whole pixel for ascent/descent).
9593 2009-03-30 Geoff Norton <gnorton@novell.com>
9595 * media.h: Hide some API that never should have been public.
9596 * media.cpp: ImageBrush no longer uses a image internally.
9597 * bitmapimage.cpp|h: Part name is a const char * since we dup
9599 * brush.cpp|h: Migrate away from using a Image internally
9600 and consume the new BitmapImage API.
9602 2009-03-30 Geoff Norton <gnorton@novell.com>
9604 * bitmapimage.cpp: Ensure we fall back to downloading if we
9605 cannot find the image as a resource.
9607 2009-03-30 Chris Toshok <toshok@ximian.com>
9609 * deployment.h|.cpp: combing the desktop and browser cases (the
9610 desktop case coming from jeff's patch) into one method, where the
9611 different root_domain behavior is determined by the boolean
9614 * runtime.cpp (runtime_init): pass an initial boolean to
9615 Deployment::Initialize to tell whether or not we should create the
9616 root domain (i.e. whether or not we should initialize mono.)
9617 (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
9619 2009-03-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
9621 * security.c: Revert latest fix, the buildbots aren't ready
9624 2009-03-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
9626 * security.c: Always call mono_assembly_setrootdir, even if
9627 CoreCLR is disabled. This should fix buildbots where
9628 mono/mcs and moonlight are installed into different
9631 2009-03-30 Geoff Norton <gnorton@novell.com>
9633 * media.cpp: Stop leaking a cairo pattern in Image::Render
9635 2009-03-30 Stephane Delcroix <sdelcroix@novell.com>
9637 * deepzoomimagetilesource.cpp: revert latest change, don't advance
9638 twice. Fixes collections.
9640 2009-03-29 Chris Toshok <toshok@ximian.com>
9642 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9643 add a sanity check here to make sure the autocreated value is of a
9646 * animation.h|.cpp: remove the /*Timeline*/ comments from
9647 everywhere -- stop pretending the type names are the same as WPF.
9649 2009-03-29 Geoff Norton <gnorton@novell.com>
9651 * media.cpp: Ensure that the ImageSource we get is a BitmapImage
9652 before treating it as such.
9654 2009-03-29 Geoff Norton <gnorton@novell.com>
9656 * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
9657 writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
9658 imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
9659 Update the image based source to have a properly implemented
9660 BitmapImage. I've also moved all this code to the SL3 API which
9661 injects a BitmapSource in between ImageSource and BitmapImage,
9662 and adds support for WriteableBitmap.
9664 Basically now all the cairo logic lives in ImageSource and
9665 BitmapSource. All the pixbuf loader logics and downloader logic
9666 is isolated in BitmapImage.
9668 * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
9669 type.h, value.h: Regenerate
9671 2009-03-29 Chris Toshok <toshok@ximian.com>
9673 * provider.h, provider.cpp, dependencyproperty.h: change
9674 AutoCreator signature to take the DependencyObject as the first
9677 2009-03-29 Chris Toshok <toshok@ximian.com>
9679 * dependencyproperty.h|.cpp: rework the autocreate functionality.
9680 instead of a boolean flag, we pass a function pointer. We keep
9681 IsAutoCreated() around (just func != NULL) and add
9682 GetAutoCreator() so the AutoCreateProvider can call the method
9683 when it needs a value.
9685 Also, remove the empty ctor since it doesn't initialize any
9686 fields (and it also isn't called.)
9688 * provider.h (class AutoCreators): new class, containing the
9689 default autocreator which just calls type->CreateInstance().
9691 * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9692 call the property's AutoCreator function if there is one.
9693 (AutoCreators::default_autocreator): new function for the default
9694 case. basically some code that was ripped out of
9697 * dependencyproperty.g.cpp: regen.
9699 2009-03-29 Chris Toshok <toshok@ximian.com>
9701 * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
9702 tree in OnLoaded, don't do anything at all if we're already
9705 2009-03-29 Chris Toshok <toshok@ximian.com>
9707 * eventargs.h: consistenfy everything, and make
9708 CollectionChangedEventArgs fields private, not public. add
9711 * dependencyobject.h (PropertyChangedEventArgs): make
9712 old_value/new_value private and add accessors.
9714 * *.cpp|.h: track the above changes.
9716 2009-03-29 Chris Toshok <toshok@ximian.com>
9718 * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
9720 * dependencyobject.cpp:, provider.cpp: track above change.
9722 2009-03-28 Sebastien Pouliot <sebastien@ximian.com>
9724 * deployment.cpp|h (Initialize): If a platform directory is
9725 specified then we initialize the CoreCLR security model.
9726 * runtime.cpp|h: Initialize the runtime using the plugin
9727 directory (when applicable, i.e. browser mode).
9728 * security.c|h: New. Handle the CoreCLR security model
9729 initialization and platform code detection.
9730 * Makefile.am: Add security.[c|h] to the build
9732 2009-03-28 Jeffrey Stedfast <fejj@novell.com>
9734 * frameworkelement.cpp (OnPropertyChanged): Instead of setting
9735 ActualWidth/Height to 0 in the non-LayoutContainer case, use
9736 ClearValue() those properties instead. Fixes some TextBlock cases.
9738 * textblock.cpp (GetSize): Check isnan() rather than 0.
9739 (Render): The dirty flag should never be set at this point, so
9740 don't bother with it. Set TextLayout's AvailableWidth to our
9742 (ArrangeOverride): Don't set dirty back to true after we've
9743 arranged, this is why dirty was true in ::Render()
9745 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9747 * textblock.cpp (Layout): Fixed the special-case logic. If no text
9748 has ever been set, then the extents should be 0,0. However, if
9749 they have ever been set but the text is currently empty, then use
9750 the font height as the ActualHeight value. Use a state variable to
9751 check if the text has ever been set rather than trying to check
9752 other things which are not reliable.
9754 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9756 * size.h (Size::GrowBy): If the width or height are infinite going
9757 in, then leave them infinite going out.
9759 * textblock.cpp (TextBlock::GetSize): New method to get the
9761 (TextBlock::Render): Use GetSize() instead of GetRenderSize().
9762 (class TextBlockDynamicPropertyValueProvider): Same.
9764 2009-03-27 Chris Toshok <toshok@ximian.com>
9766 * uielement.h (class UIElement): add LostMouseCaptureEvent.
9768 * type-generated.cpp: regen.
9770 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9772 * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
9773 subimage collection items changed.
9775 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9777 * multiscalesubimage.h|.cpp:
9778 * multiscaleimage.cpp: remove the link to msi parents and don't try to
9779 Invalidate from subimage.
9781 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9783 * collection.cpp: do not use generated cbinding in
9784 MultiScaleSubImageZIndexComparer.
9786 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9788 * multiscalesubimage.h: set a default ZIndex value
9790 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9792 * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
9793 update the TextLayout's text and attributes.
9794 (TextBlock::OnPropertyChanged): If the Text or Inlines properties
9795 change, immediately call UpdateLayoutAttributes().
9796 (TextBlock::Layout): No longer sets up the TextLayout's attributes
9797 as this is already done. Also no longer takes a cairo_t argument
9798 since it's never used, instead it now takes a Size constraint
9800 (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
9801 (TextBlock::MeasureOverride): Rewritten / simplified.
9802 (TextBlock::ArrangeOverride): Same.
9803 (class TextBlockDynamicPropertyValueProvider): Updated.
9804 (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
9805 on the Inline that changed.
9806 (TextBlock::UpdateFontDescriptions): New method to update the font
9807 descriptions on all inlines.
9808 (TextBlock::OnPropertyChanged): Update the font descriptions on
9809 all inlines whenever a font property changes.
9810 (TextBlock::SetFontSource): Call UpdateFontDescriptions().
9811 (TextBlock::DownloaderComplete): Same.
9813 * textbox.cpp (TextBoxView::Render): Set the layout's
9814 AvailableWidth to the render size width.
9815 (TextBoxView::Layout): Don't worry about constraint.width being
9816 INFINITY anymore, TextLayout() now handles INFINITY.
9818 * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
9819 and max width/height constraints, use NAN and
9820 INFINITY (respectively). This will prevent TextBox/Block from
9821 having to use hacks if their width/height constraints are
9823 (TextLayout::HorizontalAlignment): Since MaxWidth might be
9824 INFINITY, we need to base this on a new property called
9825 AvailableWidth, which is the width available for rendering (where
9826 MaxWidth is only used for wrapping).
9828 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9830 * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9831 After finding the baseUri's filename, advance beyond the / before
9832 passing it to uri->Combine().
9834 * uri.cpp (Uri::Combine): If the uri has no path and the
9835 relative_path does not begin with a /, don't prepend one.
9837 2009-03-27 Jeffrey Stedfast <fejj@novell.com>
9839 General cleanup of the TextBoxBase abstraction.
9841 * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
9843 (PasswordBox::SyncDisplayText): Generate a masked password string
9844 using the specified PasswordChar.
9845 (PasswordBox::SyncText): Call SyncDisplayText ().
9846 (PasswordBox::OnPropertyChanged): When the PasswordProperty
9847 changes, call SyncDisplayText().
9848 (PasswordBox::GetDisplayText): Override TextBoxBase's to return
9849 our masked password string.
9850 (PasswordBox::ctor): Initialize display text
9851 (PasswordBox::dtor): Delete display text.
9852 (TextBox::GetDisplayText): Simply return GetText ()
9854 2009-03-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
9856 * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
9859 2009-03-27 Jackson Harper <jackson@ximian.com>
9861 * xaml.cpp: Despite the docs saying differently
9862 (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
9863 sys:Boolean is also legal. (I wonder what else is).
9865 2009-03-27 Jackson Harper <jackson@ximian.com>
9867 * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
9869 - When we are populating the context resource dictionaries we need
9870 to include elements that are resource dictionaries not just
9871 elements have have dictionaries. This fixes elements looking up
9872 items in their top level RD (like in generic xaml).
9874 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9876 * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
9877 '/', are relative uris.
9879 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9881 * multiscaleimage.cpp: if a tile is already being downloaded, don't
9882 start a 2nd downloader for the same uri.
9884 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9886 * deepzoomimagetilesource.cpp: Uris composed of a single file name
9887 are fine too. don't discriminate !
9889 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9891 * uri.cpp: fix Combine when the original path is a single file,
9892 without a leading '/'
9894 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9896 * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
9897 the overloaded ctor now that we have a proper Uri struct
9899 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9901 * uri.h, uri.cpp: add Combine (const Uri*).
9903 2009-03-27 Stephane Delcroix <sdelcroix@novell.com>
9905 * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
9907 2009-03-26 Chris Toshok <toshok@ximian.com>
9909 * deployment.h|.cpp: be a little more fragile (and a lot less
9910 evil) about the way we're exposing Mono types in our headers.
9911 just put a typedef for MonoDomain in deployment.h instead of
9912 including appdomain.h. Include appdomain.h from deployment.cpp.
9914 2009-03-26 Chris Toshok <toshok@ximian.com>
9916 * uielement.h|.cpp (class UIElement): add the ability to do
9917 instant and delayed emission of Loaded events.
9918 (UIElement::PostSubtreeLoad): perhaps poorly named, but the
9919 @load_list is a list of UIElement which will be walked in order in
9920 a tick call, emitting OnLoaded on all of them.
9921 (UIElement::EmitSyncLoaded): walk the same list as would be passed
9922 to PostSubtreeLoad, emitting it now.
9923 (UIElement::WalkTreeForLoaded): this does a post-order tree walk
9924 building up the list which is passed to PostSubtreeLoad or
9925 EmitSubtreeLoad. The out bool parameter tells us whether we
9926 should delay the emission or not. Currently the only thing that
9927 delays emission is a control with a style applied (even a default
9928 style.) We also set a PENDING_LOADED flag on all elements during
9930 (UIElement::OnLoaded): no longer walk the tree here. only emit
9931 Loaded on this one element. Clear the PENDING_LOADED flag while
9933 (UIElement::ElementAdded): complicate matters slightly here so
9934 that it follows the following two rules:
9936 1) if @this is loaded, walk the tree and either emit or post the
9937 load based on what the out param tells us to do.
9939 2) if @this is pending_loaded, walk the tree and always post.
9941 * frameworkelement.h (class FrameworkElement): unfortunately we
9942 need access to "default_style_applied" from UIElement.
9944 * control.h|.cpp: remove OnLoaded implementation from here.
9946 * runtime.cpp (Surface::Attach): move the Loaded handling *after*
9947 the zombie check. not sure why we were ever doing it before. but
9948 most importantly, this always Posts the loaded state, it doesn't
9949 emit it synchronously. This allows us to do the changes in
9950 Application.cs/Deployment.cs that are needed to get ncaa working.
9952 2009-03-26 Chris Toshok <toshok@ximian.com>
9954 * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
9955 out the code that allows other events to be used. Maybe in SL3
9958 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
9960 * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9961 from a new TextBoxBase class which handles almost all of the logic
9964 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
9966 * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
9968 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
9970 * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9971 from a new TextBoxBase class which handles almost all of the logic
9974 2009-03-26 Jeffrey Stedfast <fejj@novell.com>
9976 * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9977 Use the new Uri::Combine() method.
9979 * uri.cpp (Uri::Combine): New method to combine a relative path to
9982 2009-03-26 Chris Toshok <toshok@ximian.com>
9984 * animation.cpp, clock.cpp: move some class-static fields around
9985 so they make more sense.
9987 2009-03-26 Chris Toshok <toshok@ximian.com>
9989 * clock.h: move enum FillBehavior...
9991 * enums.h: ... to here.
9993 2009-03-26 Chris Toshok <toshok@ximian.com>
9995 * animation2.h: nuke, moving everything into animation.h.
9997 * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
9998 the timesource/timeline stuff into separate files to reduce
9999 clock.cpp's size/complexity a bit.
10001 * mediaplayer.cpp, mediaelement.cpp, media.cpp,
10002 mms-downloader.cpp: track new locations of things (that were moved
10003 out of clock.h|.cpp)
10005 * cbinding.h, cbinding.cpp, type-generate.cpp,
10006 dependencyproperty.g.cpp: regen.
10008 * Makefile.am: add/remove files.
10010 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
10012 * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
10013 with an aspect_ratio < 1.0 (portrait images).
10015 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
10017 * multiscaleimage.h|.cpp: replace the single downloader code by
10018 a list of downloader, speed up downloading a lot. (Set --arbitrary--
10019 to 6 dlders for now)
10021 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
10023 * multiscaleimage.h|.cpp: Download directly from Render*
10025 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
10027 * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
10028 as cache key, use the new get_image_uri_func everywhere.
10030 2009-03-26 Stephane Delcroix <sdelcroix@novell.com>
10033 * deepzoomimagetilesource.h|.cpp: change the signature of
10034 get_image_uri_func. It returns a bool indicating success, the Uri is
10035 now a method arg, and no longer returned as a string pointer. Fixes
10036 some random crashes with managed tilesoources.
10038 2009-03-25 Chris Toshok <toshok@ximian.com>
10040 * uri.h (struct Uri): add accessor methods for all of the fields.
10041 The fields are still public for now, since a few places (e.g.,
10042 plugin-debug, playlist), make direct modifications.
10044 * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
10045 glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
10046 accessors when getting values.
10048 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
10050 * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
10053 2009-03-25 Jeffrey Stedfast <fejj@novell.com>
10055 * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
10056 argument to enums_int_to_str() anymore.
10058 * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
10059 no longer exists, don't bother checking it. If the target is other
10060 than the Loaded event, we need to treat the whole thing as
10061 Silverlight2 anyway.
10063 * runtime.cpp (Surface::Surface): No longer takes a silverlight2
10064 argument or keeps such a flag.
10065 (Surface::EmitEventOnList): Don't need to care about the
10067 (Surface::HandleUIKeyPress): Same.
10068 (Surface::HandleUIKeyRelease): Here too.
10070 * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
10071 (enums_int_to_str): Same.
10073 * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
10075 (value_from_str): Same.
10076 (convert_value_type): Same.
10077 (xaml_set_property_from_str): Same.
10079 2009-03-25 Geoff Norton <gnorton@novell.com>
10086 * frameworkelement.cpp:
10087 * frameworkelement.h:
10088 * type-generated.cpp:
10091 * xaml.cpp: Bindings live 100% in managed land now
10093 2009-03-25 Alan McGovern <amcgovern@novell.com>
10095 * animation.cpp: Revert the changes in r130133 as they
10096 resulted in double frees of the Value *.
10098 2009-03-25 Jeffrey Stedfast <fejj@novell.com>
10100 * value.cpp (Value::FreeValue): Don't dereference uri if it is
10103 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
10105 * multiscaleimage.cpp: emit ViewportChanged
10107 2009-03-25 Stephane Delcroix <sdelcroix@novell.com>
10109 * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
10111 2009-03-25 Jackson Harper <jackson@ximian.com>
10113 * xaml.cpp: Can put this back now that bindings are convertering
10114 strings properly. Don't try to create a value object if we are
10115 just going into managed anyways.
10117 2009-03-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
10120 * runtime.cpp: Move IsVersionSupported implementation here,
10121 add GetBackgroundColor and sprinkle generator annotations.
10124 * cbinding.cpp: Regenerated.
10126 2009-03-25 Alan McGovern <amcgovern@novell.com>
10128 * uri.cpp: Scheme was being used uninitialised if the if
10129 (!*start) check succeeded.
10131 2009-03-24 Chris Toshok <toshok@ximian.com>
10133 * playlist.cpp (PlaylistParser::OnASXStartElement): use
10135 (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
10137 * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
10138 *scheme)" so we can stop twiddling internals.
10140 2009-03-24 Chris Toshok <toshok@ximian.com>
10142 * downloader.cpp: s/protocol/scheme for Uris
10144 * playlist.cpp: s/protocol/scheme for Uris
10146 * uri.h, uri.cpp: s/protocol/scheme for Uris.
10148 2009-03-24 Chris Toshok <toshok@ximian.com>
10150 * uri.cpp: do as much as we can to get isAbsolute set correctly.
10152 2009-03-25 Andreia Gaita <avidigal@novell.com>
10154 * clock.h: remove unused timeline field
10156 2009-03-25 Andreia Gaita <avidigal@novell.com>
10158 * clock.cpp: Refresh the clock's duration, it might have changed
10159 after it's creation
10161 2009-03-24 Jeffrey Stedfast <fejj@novell.com>
10163 * value.cpp (Value::Value): If the input value has a NULL uri,
10164 don't call Uri::Copy(), simply set the new uri to NULL too.
10166 * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
10167 members in the 'to' argument. This should never happen anymore,
10168 but if it does, don't allow 'to' to have invalid pointers.
10170 2009-03-24 Jackson Harper <jackson@ximian.com>
10172 * xaml.cpp: Need to make this a little smarter, revert for now
10173 because it breaks hardrock.
10175 2009-03-24 Jeffrey Stedfast <fejj@novell.com>
10177 * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
10178 actual_height extents if the text is "".
10180 * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
10181 set NULL text on the layout so that we won't crash inside
10182 TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
10184 2009-03-24 Jackson Harper <jackson@ximian.com>
10186 * xaml.cpp: Don't attempt to convert values if we are going to
10187 managed anyways. This prevents things that can be created easily
10188 from strings being created from expressions.
10190 2009-03-24 Jackson Harper <jackson@ximian.com>
10193 * animation.cpp: Use an OBJECT for the Value property.
10194 * dependencyproperty.g.cpp: Regen
10196 2009-03-24 Stephane Delcroix <sdelcroix@novell.com>
10198 * uri.h|uri.cpp: new Equals () methods, so we can use its generated
10199 cbinding as GCompareFunc.
10201 2009-03-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
10203 * pipeline.cpp: Fix breakage.
10205 2009-03-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
10208 * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
10209 gives ready-to-present data. Make it handle pcm, rgb, rgba
10214 * type-generated.cpp: Regenerated.
10216 2009-03-23 Stephane Delcroix <sdelcroix@novell.com>
10218 * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
10219 changes to keep working
10221 2009-03-23 Jeffrey Stedfast <fejj@novell.com>
10223 * uri.cpp (Uri::operator==): If all the != compares pass, return
10224 true. Don't let control reach the end of a non-void function!
10226 * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
10227 position changed event.
10229 2009-03-23 Chris Toshok <toshok@ximian.com>
10231 * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
10232 due to vertigo doing some weird stuff that I don't fully
10233 understand :) but in the interest of not requiring every usage to
10234 include a null check, init originalString to g_strdup("") here.
10236 2009-03-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
10238 * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
10241 2009-03-23 Chris Toshok <toshok@ximian.com>
10243 * uri.cpp (Uri::Copy): return immediately if @from == null.
10245 2009-03-21 Chris Toshok <toshok@ximian.com>
10247 * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
10248 to Application:GetResource.
10250 * application.[h,cpp] (Application::GetResource): this takes a Uri
10251 instead of a string now.
10253 2009-03-21 Chris Toshok <toshok@ximian.com>
10255 * uri.[h,cpp]: a few changes:
10256 1. Add "bool isAbsolute" and "char* originalString" fields.
10257 2. Remove Clone and add a static Copy method which Value can use
10258 to copy all the internal fields.
10259 3. Add Free method.
10260 4. make it a struct so we'll only box when explicitly asked to in
10262 5. add an operator== so we can do non-reference comparisons in
10265 * dependencyobject.h,
10266 dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
10269 * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
10271 * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
10273 * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
10276 * media.cpp: source->GetUriSource() returns a Uri*
10278 * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
10280 * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
10283 * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
10284 the Value ctor does that for us.
10286 * xaml.cpp (value_from_str): add Type::URI case, and rework the
10287 Type::BITMAPIMAGE case to use a Uri object.
10289 * validators.[h,cpp]: rename NonNullStringValidator to
10290 NonNullValidator. All uses before didn't depend on the
10291 "string"-ness of the value, and we can make use of it for the Uri
10294 * value.h.in, value.cpp: add Uri support, and remove
10297 * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
10300 * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
10302 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
10304 * textbox.cpp (TextBoxView::UpdateText): Split out from
10305 TextBoxView::Layout(). Sets the text on the layout engine.
10306 (TextBoxView::Layout): Moved most of the logic into UpdateText()
10307 and the rest into Render(). We now just set the MaxWidth and lay
10309 (TextBoxView::Render): If dirty, after calling Layout(), call
10310 UpdateCursor(false) and clear the dirty flag.
10311 (TextBoxView::OnModelChanged): If the text changes, update it
10312 immediately on our layout context by calling UpdateText().
10313 (TextBoxView::SetTextBox): Call UpdateText() here as well and make
10314 it more robust against a NULL textbox argument.
10316 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
10318 * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
10319 context argument since it never actually uses it anyway.
10320 (TextBoxView::MeasureOverride): Don't create a temporary cairo
10321 context since it never gets used.
10322 (TextBoxView::ArrangeOverride): Same.
10324 2009-03-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
10328 * pipeline-asf.cpp: Re-implement fallback to http when mms
10331 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
10333 * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
10336 2009-03-20 Jackson Harper <jackson@ximian.com>
10338 * xaml.cpp: Make sure we go to managed when using property element
10339 syntax for setting properties of managed kinds.
10341 2009-03-20 Jeffrey Stedfast <fejj@novell.com>
10343 * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
10344 larger than the current ActualWidth (and no wrapping has been
10345 done), then no need to re-layout. This should help improve
10346 performance of many cases of TextBox/Block MeasureOverride() and
10348 (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
10349 set is_wrapped to true.
10350 (TextLayout::LayoutWrap): Same.
10351 (TextLayout::Layout): Reset is_wrapped to false before laying out
10354 2009-03-19 Larry Ewing <lewing@novell.com>
10356 * multiscaleimage.cpp (RenderSingle): move the clipping to the
10357 outer loop here too.
10359 2009-03-19 Larry Ewing <lewing@novell.com>
10361 * multiscaleimage.cpp (RenderCollection): rework the collection
10362 rendering slightly by moving the subimages out of the loop.
10364 2009-03-18 Chris Toshok <toshok@ximian.com>
10366 * dependencyobject.cpp (unregister_depobj_names): another side of
10367 the TagProperty coin. don't unregister names from it, since we
10368 aren't registering names from it.
10369 (DependencyObject::SetParent): remove the USERCONTROL extra
10370 registration from here. it's not necessary now that jackson has
10371 fixed where we register the names.
10373 * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
10374 freeze the default value if the property is not custom.
10376 2009-03-18 Jeffrey Stedfast <fejj@novell.com>
10378 Fixes a crash in the Microsoft.SilverlightControls
10379 ControlsExtended unit tests (specifically the DatePickerTest).
10381 * control.h (class Control): Set a DefaultValue for the Foreground
10384 * textblock.h (class TextBlock): Same.
10386 2009-03-18 Jackson Harper <jackson@ximian.com>
10388 * xaml.cpp: When we use x:Name to set an elements name, make sure
10389 that it gets set in the namescope of it's containing element.
10390 * dependencyobject.cpp|h: New method that allows setting objects
10391 name in a different namescope, this will also result in the name
10392 being set in the objects namescope.
10393 - Allow duplicate objects if they are the same object
10394 * namescope.cpp: Allow duplicates if they are the same object.
10396 2009-03-18 Jeffrey Stedfast <fejj@novell.com>
10398 * textbox.cpp (TextBox::Initialize): Don't bother connecting to
10399 MouseEnter/Leave, we don't care.
10400 (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
10401 (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
10402 parent TextBox control.
10403 (TextBoxView::OnMouseLeftButtonUp): Same.
10405 * runtime.cpp (Surface::FocusElement): Don't do all the checks
10406 here, they are now done in Control::Focus().
10407 (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
10408 now expect this to be done in the MouseLeftButtonDown event
10411 * control.cpp (Control::Focus): New method to focus a control.
10413 2009-03-18 Jb Evain <jbevain@novell.com>
10415 * deployment.cpp: add a MOON_PROFILER environment variable
10416 to control profiling of the embedded mono.
10418 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10421 * pipeline.cpp: Remove unused field.
10423 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10425 * pipeline-asf.cpp: Fix visitmix.
10427 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10431 * deployment.cpp: Add signal handlers for crash detection in
10432 libmoon instead of libshocker, this way there's not a race
10433 condition between loading mono and installing a signal
10434 handler in libshocker (the signal handler has to get
10435 installed before loading mono, otherwise we'll crash for
10436 real due to managed exceptions getting caught by the signal
10439 2009-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
10441 * pipeline.cpp: More asserts.
10443 2009-03-17 Jeffrey Stedfast <fejj@novell.com>
10445 * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
10448 2009-03-17 Jeffrey Stedfast <fejj@novell.com>
10450 * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
10451 shadow the fname method argument, and don't leak if
10452 finfo.external_fa has the 4th bit set.
10454 2009-03-17 Chris Toshok <toshok@ximian.com>
10456 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10457 don't do the SetParent stuff (even when the value is a
10458 DependencyObject) if the property is UIElement::TagProperty. This
10459 fixes the cyclic tree warning in RichTextBox. Right now it's
10460 hardcoded to check for that property, but we need to move it to
10461 the DP metadata, and do an audit of other "typeof(object)" DP's to
10462 make sure we aren't setting parent where we shouldn't be.
10464 2009-03-17 Stephane Delcroix <sdelcroix@novell.com>
10466 * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
10468 2009-03-16 Jackson Harper <jackson@ximian.com>
10470 * template.cpp: It doesn't really change anything because
10471 templates are never parented, but technically they should be in non
10472 temporary namescopes.
10474 2009-03-16 Jeffrey Stedfast <fejj@novell.com>
10476 * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
10477 go up/down 'n' lines instead of always 1 if n wouldn't overflow.
10479 2009-03-16 Stephane Delcroix <sdelcroix@novell.com>
10481 * multiscaleimage.cpp:
10482 * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
10483 it on VP origin or width changed.
10485 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
10487 * multiscaleimage.cpp: fix the clipping issue for collections
10489 2009-03-13 Chris Toshok <toshok@ximian.com>
10491 * type.h, type-generated.cpp: regen.
10493 2009-03-13 Chris Toshok <toshok@ximian.com>
10495 * xaml.cpp (value_from_str): in the int32 and int64 case, we need
10496 to parse until we get an invalid character, and return the value
10497 parsed up to that point. it's only an error if there's no valid
10500 2009-03-13 Chris Toshok <toshok@ximian.com>
10502 * textblock.h (class Inline): inlines don't permit multiple
10503 parents (Fixes RunTest.RunMultipleParents).
10505 2009-03-13 Geoff Norton <gnorton@novell.com>
10507 * xap.cpp: Zip files can contain directory entires, we shouldn't
10508 try to open them as files.
10510 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10513 * control.cpp: Added a null check to prevent crashes.
10515 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10518 * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
10519 and clean up upon shutdown.
10522 * pipeline.cpp: Remove a broken attempt to ensure that we
10523 don't leave Media threads running after having shut down.
10525 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10527 * playlist.cpp: Dispose: fix a typo - dispose the media not
10530 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10532 * playlist.cpp: DownloadProgressChangedHandler: Don't do
10533 anything if we've been disposed. Fixes a warning.
10535 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10537 * mediaelement.cpp: Dispose: We need to dispose the media
10540 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10542 * downloader.h: DownloaderResponse: Add virtual ref/unref
10545 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10547 * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
10548 crashes when we can't find a time manager. Also if we can't
10549 remove a timeout, we have to leak ourselves, otherwise the
10550 timeout might get called after we're destroyed.
10552 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10556 * type-generated.cpp: Added Deployment::ShuttingDownEvent.
10557 This will be used by MediaElement to ensure that all media
10558 threads are cleaned up even if the MediaElement itself is
10561 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
10563 * multiscaleimage.cpp: no longer use precompiled table for morton
10564 layout, but use short and fast function in place.
10566 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
10568 * multiscaleimage.cpp: check for null tiles uri returned by
10571 2009-03-13 Stephane Delcroix <sdelcroix@novell.com>
10573 * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
10574 having to loop over all the tiles on every tick.
10576 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10578 * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
10579 toplevel element before disposing it, since the SetSurface
10580 will be propagated to all descendants, while Dispose will
10581 detach descendants (preventing subsequent SetSurface calls
10584 2009-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
10586 * mediaplayer.cpp: Open: when we add an event handler to the
10587 video stream's FirstFrameEnqueued event, the first frame
10588 might already be in the queue, so just call LoadVideoFrame
10589 once always. Fixes test-canvas-no-size.html.
10591 2009-03-12 Geoff Norton <gnorton@novell.com>
10593 * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
10595 2009-03-12 Geoff Norton <gnorton@novell.com>
10597 * deepzoomimagetilesource.cpp: Ensure we dont override default values
10598 if nothing has been provided in the XML
10600 2009-03-12 Geoff Norton <gnorton@novell.com>
10603 * animation.h: Implement SkipToFill
10605 2009-03-12 Larry Ewing <lewing@novell.com>
10607 * canvas.cpp: don't chain up the FE in the overides that is very
10610 2009-03-12 Chris Toshok <toshok@ximian.com>
10612 * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
10613 text demo when you click on the buttons. we need to be creating
10614 RoutedEventArgs, not EventArgs.
10616 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
10618 * codec-version.h.in: Bump.
10620 2009-03-12 Alan McGovern <amcgovern@novell.com>
10622 * dependencyproperty.cpp: 1) Refactor the code so that
10623 open/closing parens are parsed in a separate step to
10624 typename/property name. Then merge the codepaths for the
10625 default and '(' case.
10626 2) Attached properties can only be specified inside parens. So
10627 "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
10628 3) For non-attached properties both "Rectangle.RadiusX" and
10629 "(Rectangle.RadiusX)" are acceptable.
10631 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
10633 * pipeline.cpp: Add a null check.
10635 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
10637 * audio.cpp: Use media's thread-safe event handling.
10640 * playlist.cpp: PlaylistRoot: keep a reference to our media
10641 player (i.e. don't use MediaElement's media player, it may
10642 change). Use the thread-safe event support in media.
10645 * mediaplayer.cpp: Use media's thread-safe event handling.
10646 Don't tick while waiting for the media to get the first
10647 frame, just attach an event handler to
10648 FirstFrameEnqueuedEvent.
10651 * pipeline.cpp: IMediaObject: Add thread-safe event support.
10652 Media: inherit from IMediaObject to get the thread-safe
10655 * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
10656 ignore ASFReader::Seek's result, handle it correctly.
10657 EnqueueGetFrame: requeue a get frame request if we don't
10658 have enough data yet.
10660 2009-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
10662 * pipeline.h: Move IMediaObject above Media so that Media can
10663 inherit from IMediaObject.
10665 2009-03-12 Andreia Gaita <avdigal@novell.com>
10667 * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
10668 started during the tick event; in some cases the time between these
10669 two calls was enough to have an extra tick on the time manager, and
10670 the DispatcherTimer would be advanced again even though it was
10671 stopped, and this would happen after the Completed handler was
10672 removed and before it was added again.
10673 Fixes the RestartTimer2 test and SilverlightChess.
10675 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
10677 * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
10678 brushes here anymore.
10679 (class TextBoxDynamicPropertyValueProvider): Return default
10680 selection brushes if they've been initialized (happens in
10681 TextBoxView::Render).
10682 (TextBoxView::Render): Initialize the selection brushes if they
10683 haven't already been.
10685 2009-03-11 Alan McGovern <amcgovern@novell.com>
10687 * dependencyproperty.cpp: Fix issues in resolve_property_path
10688 with some complex paths. Add two new NUnit tests which
10689 verify the correct properties are animated.
10691 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
10693 * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
10695 * downloader.cpp (downloader_deobfuscate_font): Moved here from
10696 text.cpp and made public.
10698 2009-03-11 Jeffrey Stedfast <fejj@novell.com>
10700 * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
10703 2009-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
10705 * brush.cpp: ImageBrush::image_failed: we need to ref the
10706 eventargs when we do emit chaining.
10708 2009-03-11 Chris Toshok <toshok@ximian.com>
10710 * border.cpp (Border::OnPropertyChanged): Border is ever the red
10711 headed stepchild. It has its own validation wrt SetLogicalParent,
10712 that behaves like the InvalidOperationException case in
10713 FrameworkElement, but throws ArgumentException instead of IOE.
10715 2009-03-11 Chris Toshok <toshok@ximian.com>
10717 * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
10718 Top/Left property changed handling from OnSubPropertyChanged to
10719 here, and remove OnSubPropertyChanged. Basically property changes
10720 on items in collections are never communicated back using
10721 OnSubPropertyChanged. That is reserved for direct children of the
10722 object (fill/stroke brushes, etc.)
10724 * grid.h, grid.cpp: same.
10726 * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
10727 remove this use of GetParent (yay!) since we don't implicitly
10728 notify our logical parent if an attached property was changed. we
10729 just notify all listeners.
10731 * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
10732 rename GetParent/SetParent to GetParentClock/SetParentClock.
10734 2009-03-10 Chris Toshok <toshok@ximian.com>
10736 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10737 hook up (and unhook) the collection events if the dob is a
10738 Type::COLLECTION. Remove the stupid parent check that was
10739 breaking everything. Pass in our MoonError parameter to
10740 OnPropertyChanged so we can communicate it back.
10741 (DependencyObject::ClearValue): unhook from the collection events.
10743 * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
10744 these methods are now in FrameworkElement.
10745 (SetParent, GetParent): their replacements. Hopefully these are
10746 not long for this world, and I'm working on getting rid of them.
10747 they are used in very few places now (basically collection.cpp and
10749 (collection_changed, collection_item_changed): two new
10750 EventHandlers so we can make collection stop calling directly into
10752 (OnPropertyChanged): add a MoonError* arg here so we can transmit
10753 errors back from the various OnPropertyChanged overrides.
10756 validators.cpp (Validators::ContentControlContentValidator): add
10757 half of the "multiple parents for .Content" checks here. This
10758 runs before the value is actually set and checks to see if the
10759 logical parent is a Panel subclass. If it is it throws an
10760 ArgumentException instead of an InvalidOperationException (don't
10763 * collection.cpp, collection.h: remove the assumption that we can
10764 just call into our parent to notify of collection/collection item
10765 changes. instead just emit an event.
10767 * eventargs.h: define CollectionItemChangedEventArgs for the new
10768 Collection::ItemChangedEvent.
10770 * contentcontrol.h,
10771 contentcontrol.cpp (ContentControl::OnPropertyChanged): call
10772 SetLogicalParent on the old/new contents if they're
10773 FrameworkElements, and if either returns an error, return
10776 * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
10780 * frameworkelement.cpp, frameworkelement.h: move
10781 Set/GetLogicalParent here, and make the InvalidOperationException
10782 on multiple parents unconditional.
10784 * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
10785 a FrameworkElement, set its logical parent.
10787 * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
10788 control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
10789 mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
10790 textbox.*, text.*, transform.*, uielement.*: change all the
10791 OnPropertyChanged signatures to include MoonError*
10793 * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
10794 type.h, value.h: regen.
10796 * resources.cpp: s/LogicaParent/Parent.
10798 * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
10799 not really part of this larger change, but needed for the
10800 toggleref stuff. we need to call SetParent on all the
10801 DO-subclassed converted values so they never reference a trashed
10803 (get_parent): add more cases here, none of which I'm sure are
10806 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10808 * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
10809 (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
10811 (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
10812 so that we don't register event callbacks twice. Doh.
10814 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10816 * validators.cpp (Validators::PasswordValidator):
10817 Removed. PasswordBox::PasswordProperty is internal, so we map it
10818 to TextBox::TextProperty and manually implement the
10819 getter/setter (which si where we manually throw an
10820 ArgumentNullException if set to null).
10822 * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
10823 Password and Text properties sucks, let's not do it. Instead,
10824 we'll map PasswordProperty to TextProperty on the managed
10825 side. Also need to Invalidate() if PasswordChar changes.
10826 (TextBoxView::Layout): Mask the text with PasswordChars if we are
10827 rendering a PasswordBox's content.
10829 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10831 * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
10832 Password properties in sync. Don't emit a PasswordChanged event,
10833 that's mapped to TextChanged on the managed side.
10834 (TextBox::OnApplyTemplate): Handle Border and Panel
10835 ContentElements as well.
10837 * textbox.h (class PasswordBox): Get rid of the
10838 PasswordChangedEvent and also some of the properties that it
10839 shares with TextBox.
10841 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10843 * contentcontrol.cpp (ContentControl::ContentControl): Use the
10844 nice new ManagedTypeInfo ctor.
10846 * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
10848 * textbox.cpp (TextBox::Initialize): New protected method; all of
10849 the old ctor logic was moved here so that PasswordBox could reuse
10851 (TextBox::TextBox): Call Initialize() with out type info.
10852 (PasswordBox::PasswordBox): Call Initialize() with out type info.
10853 (PasswordBox::Cursor*): Override some of TextBox's cursor
10854 navigation because we don't "see" whitespace or lines.
10856 2009-03-10 Larry Ewing <lewing@novell.com>
10858 * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
10859 isn't found in the template.
10861 2009-03-10 Jackson Harper <jackson@ximian.com>
10863 * xaml.cpp: Don't use GetLogicalParent here because the parenting
10864 hasn't been setup yet. Wse the XamlElementInstance tree for
10865 figuring out who our parent is.
10867 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10869 * brush.cpp: ImageBrush::image_failed: propagate event args.
10871 2009-03-10 Jeffrey Stedfast <fejj@novell.com>
10873 * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
10874 loops into do-while loops so that the line->height and
10875 line->descent get set properly. Needed to fix
10876 TextLayout::GetCursor().
10878 2009-03-10 Jackson Harper <jackson@ximian.com>
10880 * xaml.cpp: Do some basic type conversion for resources, this
10881 allows you to do things like store a font family as
10882 <clr:String>Arial</clr:String>.
10884 2009-03-10 Jackson Harper <jackson@ximian.com>
10887 * value.h.in: Consistentify method name.
10889 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10891 * uielement.cpp: GetTimeManager: if we don't have a surface,
10892 try to get it from the deployment.
10894 2009-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
10897 * pipeline-nocodec-ui.cpp: Set current deployment in
10900 2009-03-09 Larry Ewing <lewing@novell.com>
10902 * border.cpp (Render): set the fill rule after drawing the clip
10903 geometry since it will set the fill rule for itself.
10905 2009-03-09 Chris Toshok <toshok@ximian.com>
10907 * enums.cpp (cursors_map): add the missing Size* members here.
10909 http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
10910 gallery site to the point where it's displaying a UI.
10912 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10914 * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
10917 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10919 * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
10920 and cursor_offset to 0.0. Silverlight doesn't use character column
10921 when moving the cursor up/down, it uses the cursor's x-offset.
10922 (TextBox::CursorDown): Implement using TextLayoutLines.
10923 (TextBox::CursorUp): Same.
10924 (TextBoxView::GetLineFromY): New convenience method.
10925 (TextBoxView::GetLineFromIndex): Another new method.
10927 * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
10929 (TextLayout::GetCursorFromXY): Moved the remaining logic into
10930 TextLayoutLine::GetCursorFromX().
10931 (TextLayout::GetLineFromY): Provide the line index to our caller,
10933 (TextLayout::GetLineFromIndex): New convenience method.
10935 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10937 * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
10938 cursor == 0 hack anymore.
10940 2009-03-09 Andreia Gaita <avidigal@novell.com>
10942 * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
10945 2009-03-09 Andreia Gaita <avidigal@novell.com>
10947 * dependencyobject.cpp: do the toggleref callbacks so the managed
10948 side can dispose of things properly
10950 2009-03-09 Jeffrey Stedfast <fejj@novell.com>
10952 * layout.cpp (unichar_combining_class): New function to protect
10953 against using Glib's g_unichar_combining_class() if the API isn't
10956 2009-03-09 Jackson Harper <jackson@ximian.com>
10958 * xaml.cpp: Store the top element in the xaml context so we can
10959 still lookup handlers when parsing templates.
10961 2009-03-09 Stephane Delcroix <sdelcroix@novell.com>
10963 * multiscaleimage.cpp: fix the loop ending conditions for images
10964 with extreme aspect ratios.
10966 2009-03-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
10968 * deployment.cpp: Add support for setting the root directory
10971 2009-03-06 Larry Ewing <lewing@novell.com>
10973 * multiscaleimage.cpp (Render): cache the surface type as a
10974 similar surface to the rendering target to speed up rendering a
10977 2009-03-06 Larry Ewing <lewing@novell.com>
10979 * layout.cpp (SetText): handle null text here.
10981 2009-03-06 Geoff Norton <gnorton@novell.com>
10983 * codec-version.h.in: When we change the layout of
10984 dependencyobject, we need to bump the ABI
10986 2009-03-06 Alan McGovern <amcgovern@novell.com>
10992 * animation.cpp: If the PropertyPath supplied to the
10993 TargetPropertyProperty is a DependencyProperty, we need a
10994 special method to retrieve it. Normally PropertyPaths which
10995 are instantiated with a DependencyProperty are returned as
10996 'null' from native. Also add method for getting the manual
10999 2009-03-06 Alan McGovern <amcgovern@novell.com>
11006 * animation.cpp: Revert - I didn't mean to commit that yet.
11009 2009-03-06 Alan McGovern <amcgovern@novell.com>
11011 * propertypath.h: Need to null check the path before passing
11012 to strcmp - It is possible for the path to be null now.
11014 2009-03-06 Andreia Gaita <avidigal@novell.com>
11016 * dependencyobject.[h|cpp]: Add toggleref event registration
11019 * cbinding.[h|cpp]: regen
11021 2009-03-05 Jeffrey Stedfast <fejj@novell.com>
11023 * layout.cpp (FindLastWord): We need to walk backwards, not
11026 2009-03-05 Alan McGovern <amcgovern@novell.com>
11028 * propertypath.h: If we set a propertypath with a
11029 DependencyProperty, set the 'path' string to null. This
11030 avoids extra marshalling when it's not needed.
11032 2009-03-04 Geoff Norton <gnorton@novell.com>
11034 * deployment.cpp: Finalizing the domain destroys all objects
11035 immediately. Its possible that we might end up invoking more
11036 finalizers in the unref drain thta begins after dispose, so
11037 we're going to force a full gc and finalizer run of the collected
11038 objects here and allow ~Deployment to finalize the entire domain.
11040 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
11042 * pipeline.cpp (Media::DisposeObjectInternal): Return
11043 MEDIA_SUCCESS so that control doesn't reach the end of a non-void
11046 * layout.cpp (TextLayout::GetCursorFromXY): Don't use
11047 g_unichar_iszerowidth().
11048 (TextLayout::GetCursor): Same.
11050 2009-03-04 Larry Ewing <lewing@novell.com>
11052 * border.cpp, border.h: clean up the path_only drawing a
11053 little. set CanFindElement more appropriately.
11055 * panel.cpp: undo the path_only logic a bit.
11057 * frameworkelement.cpp: make FindElementInHostCoordinates a little
11060 * uielement.cpp, uielement.h: Make the CanFindElement default be
11061 false, and remove the broken in_stroke check.
11063 2009-03-04 Stephane Delcroix <sdelcroix@novell.com>
11065 * multiscaleimage.h|cpp: generate PInvoke for Setters so the
11066 animations are used from managed Set() too
11068 2009-03-04 Stephane Delcroix <sdelcroix@novell.com>
11070 * multiscaleimage.h|cpp: pan and zoom animation in
11071 Viewport[Origin|Width] properties Setters
11073 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
11075 * layout.cpp: Disable debug printfs unless layout debugging is
11078 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
11080 Fixes the last failing case in LineBreakBasic1.htm
11082 * layout.cpp (layout_word_wrap): When checking for last_word, use
11083 <= instead of < because inptr, at this point, is at the first byte
11084 *after* the character just gobbled up.
11086 2009-03-04 Jeffrey Stedfast <fejj@novell.com>
11088 Fixes ActualWidth/Height extents for LineBreakBasic1.htm
11090 * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
11091 extents include trailing LWSP if-and-only-if that trailing LWSP is
11093 (TextLayout::LayoutNoWrap): Same.
11094 (TextLayout::LayoutWrap): Same.
11096 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
11098 * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
11101 * font.cpp (TextFont::GetGlyphInfo): If unichar is
11102 0xFEFF (zero-width no-break space), then return a global
11103 GlyphInfo. We do this because at least some fonts won't have this
11104 glyph and we don't want to render an empty box (the default
11107 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
11109 * layout.cpp (layout_word_wrap): Silverlight ignores breaking
11110 rules for glyphs that the font doesn't contain.
11112 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
11114 * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
11115 op.prev up-to-date if we combine chars.
11117 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
11119 Fixes a few more cases in LineBreakClasses.htm
11121 * layout.cpp (utf8_find_last_word): If a zero-width space follows
11122 a combining mark, treat the zws as part of a word and not lwsp.
11123 (layout_word_lwsp): Do NOT ignore zero-width characters, let the
11124 font metrics do the talking.
11125 (TextLayout::LayoutNoWrap): Same.
11126 (layout_word_overflow): Same combining-mark fix as above.
11127 (layout_word_wrap): Same. Also changed the way we keep track of
11128 break opportunities. After discoverign that we need to wrap, get
11129 the break-type for the follwoing character before working
11130 backwards. Try to return false if we manage to squeeze the entire
11131 word onto the line anyway.
11133 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
11135 Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
11137 * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
11138 (utf8_find_last_word): Use BreakSpace() instead of
11139 g_unichar_isspace() since that's how the rest of our breaking
11141 (FindLastWord): Same.
11142 (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
11144 (LayoutNoWrap): Same.
11146 2009-03-03 Jeffrey Stedfast <fejj@novell.com>
11148 * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
11149 to Wrap here so that we can avoid a re-layout if the old wrapping
11152 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
11154 Fixes some wrapping issues in LineBreakBasic1.htm
11156 * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
11157 variable to keep track of whether or not the layout_word_wrap()
11158 function returned. We want to keep 'linebreak' as a separate
11159 state. If we were told to wrap, but we've reached the end of the
11160 run, postpone wrapping until the next run (which might start with
11163 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
11165 Fixes for AdobeFonts.htm
11167 * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
11168 its own Fill() so that if any glyphs have a tail that descends
11169 below the baseline into the underline, the fill doesn't negate
11170 itself where the paths overlap.
11171 (GenerateGlyphCluster): Use the font->Ascender() to get the
11172 baseline offset from the top. Height() + Descender() isn't quite
11173 right. Should probably fix other places that use that strategy as
11174 well, but one step at a time.
11176 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
11178 * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
11180 (TextBoxView::Render): If the selection has changed, update the
11181 selection on the layout engine.
11182 (append_runs): Removed; no longer needed.
11183 (TextBoxView::Layout): Updated to use the new layout APIs.
11184 (TextBoxView::OnModelChanged): When the selection changes, don't
11185 set dirty to true. Instead, set selection_changed to true.
11186 (TextBoxView::SetTextBox): Set the default text attributes on our
11187 layout with the textbox as the source.
11189 * text.cpp (TextBlock::Layout): Updated to use the new text layout
11192 * layout.cpp: All new layout/rendering engine.
11194 2009-03-04 Geoff Norton <gnorton@novell.com>
11196 * deployment.cpp: When we dispose the domain, we force a full GC
11197 run to happen, otherwise objects could retain a ref to the deployment
11198 causing ~Deployment to never be called.
11200 2009-03-04 Jackson Harper <jackson@ximian.com>
11202 * xaml.cpp|h: Add a new method for grabbing the element_name of a
11203 xaml element instance from managed.
11205 2009-03-04 Alan McGovern <amcgovern@novell.com>
11207 * src.mdp: Add missing files to the MD solution
11209 2009-03-03 Chris Toshok <toshok@ximian.com>
11211 * collection.cpp (DependencyObjectCollection::AddedToCollection):
11212 add a check for PermitsMultipleParents here.
11214 * collection.h (UIElementCollection::AddWithError): remove.
11216 * dependencyobject.h (DependencyObject::PermitsMultipleParents):
11217 return true by default.
11219 * style.h (class Setter): setters don't permit multiple parents.
11221 * uielement.h (class UIElement): neither do uielements.
11223 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11224 change the UIElement test to a PermitsMultipleParents test.
11226 2009-03-03 Chris Toshok <toshok@ximian.com>
11228 * cbinding.h, cbinding.cpp: regen.
11230 * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
11231 the parent of the DO is a collection, throw an exception.
11232 (UIElementCollection::CanAdd): remove.
11233 (DependencyObjectCollection::CanAdd): remove.
11234 (HitTestCollection::CanAdd): remove.
11236 * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11237 reinstate the multiple parents warning, but make it a MoonError,
11238 and make it only apply to visual elements (UIElement subclasses,
11241 * dependencyobject.h (GetLogicalParentIncludingCollections): add a
11242 new getter for just the logical_parent field, which is horribly
11244 (GetLogicalParent): add a pinvoke for this.
11246 2009-03-03 Jackson Harper <jackson@ximian.com>
11248 * xaml.cpp|h: SetProperty now takes a Value instead of a
11249 DependencyObject, this allows us to set properties on things like
11252 2009-03-03 Geoff Norton <gnorton@novell.com>
11255 * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
11258 2009-03-03 Alan McGovern <amcgovern@novell.com>
11261 * propertypath.h: Complete the implementation of PropertyPath.
11262 If it is constructed with a DependencyProperty in managed,
11263 propagate this to native.
11265 * dependencyproperty.cpp: If the property path instance was
11266 constructed with a DependencyProperty *, immediately return
11269 2009-03-03 Alan McGovern <amcgovern@novell.com>
11272 * animation.cpp: Implement the required exceptions for managed
11273 code when starting storyboards which are missing properties
11274 or can't find the target element/property.
11276 2009-03-03 Alan McGovern <amcgovern@novell.com>
11278 * src.mdp: Add propertypath.h to the MD solution
11280 2009-03-03 Alan McGovern <amcgovern@novell.com>
11283 * animation.cpp: Storyboards should always use the surface in
11284 the current deployment when starting. They don't have to be
11285 explicitly attached to a surface - SL2 has different
11286 semantics as compared to SL1 which caused some of the 1.0
11287 tests to flag this as a regression.
11289 2009-03-03 Alan McGovern <amcgovern@novell.com>
11293 * animation.cpp: Revert last change. I have the test failing
11296 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11298 * pipeline-asf.cpp: Add a null check.
11300 2009-03-03 Alan McGovern <amcgovern@novell.com>
11303 * animation.cpp: Storyboards should always use the surface in
11304 the current deployment when starting. They don't have to be
11305 explicitly attached to a surface.
11307 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11309 * dependencyobject.cpp: EventObject::SetSurface: only warn
11310 about wrong thread if we're actually change something.
11312 * mediaplayer.cpp: Call DisposeObject on the media to dispose
11316 * pipeline.cpp: Add Media::DisposeObject to have objects
11317 disposed on the media thread.
11319 2009-03-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
11321 * pipeline.cpp: Add a missing base call to Dispose.
11323 2009-03-02 Geoff Norton <gnorton@novell.com>
11325 * pipeline.cpp: SetSource (uri) is not required to be called before
11326 SetSource (Downloader, PartName) from the javascript API.
11328 2009-03-02 Geoff Norton <gnorton@novell.com>
11330 * deployment.cpp: Enable signal chaning
11332 2009-03-02 Jeffrey Stedfast <fejj@novell.com>
11334 * textbox.cpp (TextBox::Paste): New method to paste the
11335 contents. Since pasting text is asyncronous, we have to emit our
11336 own events and can't rely on them happening inside OnKeyDown().
11337 (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
11338 false if updating the layout returns false.
11340 2009-03-01 Andrés G. Aragoneses <aaragoneses@novell.com>
11342 * runtime.cpp: Add an EOL at the end of a printf.
11344 2009-03-01 Jeffrey Stedfast <fejj@novell.com>
11346 * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
11347 don't want to be exporting these symbols.
11349 2009-02-27 Stephane Delcroix <sdelcroix@novell.com>
11351 * multiscaleimage.cpp: use the tiles containing the shared thumbs for
11352 the highest levels of DZ collections. Saves a lot of network traffic.
11354 2009-02-26 Sebastien Pouliot <sebastien@ximian.com>
11356 * resources.cpp: Simplify (old glib) Clear and use the "right" macro
11358 2009-02-26 Chris Toshok <toshok@ximian.com>
11360 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11361 more tweaking of inheritance behavior. if the parentProperty
11362 exists, check the local value, and if it exists, return that.
11363 otherwise return return GetValue.
11365 2009-02-26 Chris Toshok <toshok@ximian.com>
11367 * border.cpp (Border::OnPropertyChanged): robustificate this a
11370 2009-02-26 Chris Toshok <toshok@ximian.com>
11372 * cbinding.h, cbinding.cpp: regen.
11374 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
11375 initialize default_style_appled to false.
11376 (FrameworkElement::SetDefaultStyle): new method, so that the
11377 managed code can set the default style without going through the
11378 CLR property wrapper (and the DP system), since (stupidly, imo)
11379 the default style isn't exposed by the Style property.
11380 (FrameworkElement::Measure): I don't like doing this hear, but
11381 according to dave relyea's blog, templates are applied when
11382 Measure is called. we could add an internal measure hook so that
11383 this code could live in control.cpp, but for now this hack will
11386 * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
11387 and add the default_style_applied field.
11389 * control.cpp (Control::OnLoaded): only apply the default style
11390 here if we haven't already (to handle the case where the object is
11391 created programmatically).
11393 * xaml.cpp (end_element_handler): according to the blog post in
11394 the added comment, controls defined in XAML get their default
11395 style applied when the end tag is seen.
11397 2009-02-26 Jeffrey Stedfast <fejj@novell.com>
11399 * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
11401 (TextBuffer::Replace): Don't call Resize() if the replacement text
11402 is shorter than the old subtext because the realloc() would lose
11403 data before we had a chance to shift things into place.
11405 2009-02-26 Sebastien Pouliot <sebastien@ximian.com>
11407 * resources.cpp: Fix crash on SLED (old glib) when clearing the
11408 hashtable (somehow this did not crash before)
11410 2009-02-25 Jackson Harper <jackson@ximian.com>
11412 * xaml.cpp: Remove some old code that was preventing non-dob
11413 values from being set to native properties.
11415 2009-02-25 Jeffrey Stedfast <fejj@novell.com>
11417 * textbox.cpp (TextBuffer::Substring): New method to get a
11419 (class TextBoxUndoAction*): New classes to represent different
11420 types of Undo/Redo actions.
11421 (class TextBoxUndoStack): New Undo/Redo stack class.
11422 (TextBox::TextBox): Initialize undo/redo stacks.
11423 (TextBox): Destroy undo/redo stacks.
11424 (TextBox::KeyPressBackSpace): Record an undo action.
11425 (TextBox::KeyPressDelete): Same.
11426 (TextBox::KeyPressUnichar): Here too.
11427 (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
11428 (TextBox::OnPropertyChanged): Record undo actions for setting
11429 SelectedText and Text properties.
11430 (TextBox::Undo): Undo the most recent action.
11431 (TextBox::Redo): Redo the most recent action.
11433 2009-02-25 Stephane Delcroix <sdelcroix@novell.com>
11435 * multiscaleimage.h|cpp: return the next tile to download
11436 in RenderSingle, RenderCollection. so the download is triggered
11437 from a single place.
11439 2009-02-25 Stephane Delcroix <sdelcroix@novell.com>
11441 * multiscaleimage.h|cpp: split Render in RenderSingle,
11444 2009-02-24 Chris Toshok <toshok@ximian.com>
11446 * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
11447 added to the list during emission, we can end up doing the Finish
11448 decrements when we didn't do the Start increments, leading to a
11449 negative events->emitting count. This causes us to spin in
11450 unref_delayed on shutdown. Fixes bug #479364.
11454 2009-02-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
11456 * codec-version.h.in: Bump abi version.
11459 * mediaplayer.cpp: Handle frames with width/height set, and
11460 change our cairo surface accordingly.
11463 * pipeline.cpp: Add width/height to MediaFrame, to support
11464 frames with different sizes than the initial size specified
11467 2009-02-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
11469 * dependencyobject.cpp: Emit: Add a null check.
11471 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
11473 * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
11474 1-pixel-wide line for the cursor... apparently cairo has forsaken
11475 1-pixel-wide lines.
11477 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
11479 * layout.cpp (TextLayout::GetCursor): Revert previous round()
11480 change, this isn't the right way to do it.
11482 * textbox.cpp (TextBoxView::BeginCursorBlink): Call
11484 (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
11487 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
11489 * multiscaleimage.cpp: remove some debugs, clean the render loops,
11490 cleanly dispose the hashtable and its components
11492 2009-02-23 Jeffrey Stedfast <fejj@novell.com>
11494 * layout.cpp (TextLayout::GetCursor): Round the cursor's x
11495 position to the nearest whole number (makes the cursor look
11498 * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
11500 2009-02-23 Chris Toshok <toshok@ximian.com>
11502 * xaml.cpp (value_from_str): handle Type::OBJECT here by just
11503 assuming the value is a string. Fixes Tag.htm.
11505 2009-02-23 Geoff Norton <gnorton@novell.com>
11507 * debug.cpp: Don't go poking around in managed land if we don't have
11510 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
11512 * multiscaleimage.cpp: Render () in relative coordinates
11514 2009-02-23 Stephane Delcroix <sdelcroix@novell.com>
11516 * multiscaleimage.h|cpp: use filename as cache keys
11518 2009-02-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
11521 * pipeline.cpp: Only decode on the media thread.
11523 2009-02-23 Alan McGovern <amcgovern@novell.com>
11526 * dependencyproperty.g.cpp: Tag is a System.Object, not a
11529 2009-02-22 Geoff Norton <gnorton@novell.com>
11531 * pipeline.cpp|h: Add extra_data from managed for AudioStream too
11533 2009-02-22 Geoff Norton <gnorton@novell.com>
11535 * cbinding.cpp|h: Regen
11536 * pipeline.cpp|h: When constructing a new VideoStream pass the
11537 extra_data from managed.
11539 2009-02-22 Geoff Norton <gnorton@novell.com>
11541 * pipeline-asf.cpp:
11542 * pipeline.cpp|h: Add some missing codecs.
11544 2009-02-20 Jeffrey Stedfast <fejj@novell.com>
11546 * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
11547 actual_width, segment->end, etc - even if all we had was
11548 whitespace. Try to keep better track of this state as well.
11549 (TextLayout::GetCursor): The cursor height is actually the same as
11552 * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
11553 (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
11555 (TextBox::OnPropertyChanged): Check for inkeypress so we don't
11556 syncronize things too early (we want to do it in SyncAndEmit() at
11557 the end of OnKeyDown()). Also updated to keep proper emit state.
11558 (TextBox::ClearSelection): Only sync selected text if we aren't in
11560 (TextBox::Select): Same.
11562 2009-02-20 Jeffrey Stedfast <fejj@novell.com>
11564 * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
11565 able to resize or false if we failed.
11566 (TextBuffer::*): If Resize fails, return.
11567 (TextBox::CursorPrevWord): Only nagivate back so long as i >
11568 begin. Prevents us from returning -1 when begin is 0.
11569 (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
11570 total number of bytes left after cutting, we only want to memmove
11571 the bytes after the cut point.
11573 * moon-path.c (moon_path_ensure_space): New function to replace
11574 the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
11575 that callers can tell if they have enough space to add the data
11576 they want. Fixed callers to check the return value and return w/o
11577 adding curves, lines, whatever. While this will mean that
11578 Moonlight won't render the path correctly, at least we won't
11581 2009-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
11583 * mediaplayer.cpp: Open: Show the first frame upon opening a
11586 2009-02-19 Sebastien Pouliot <sebastien@ximian.com>
11588 * size.cpp|h: Add FromStr (copied from Point)
11589 * xaml.cpp: Parse Type::SIZE
11591 2009-02-19 Jeffrey Stedfast <fejj@novell.com>
11593 * stylus.h (class StylusPoint): In managed-land, this class is
11594 actually a struct, so until we find a better way, mark property
11595 accessors for pinvoking.
11596 (class StylusPointCollection): Add AddStylusPoints to the list of
11597 methods to create pinvoke stubs for.
11598 (class StylusInfo): Fixed to have a managed class
11599 autogenerated (internal).
11601 * brush.cpp (VideoBrush::SetSource): Implemented.
11603 2009-02-19 Sebastien Pouliot <sebastien@ximian.com>
11605 * dependencyobject.cpp|h: The parameter is not needed anymore
11606 since the xaml code was updated to work without using the
11609 2009-02-19 Jackson Harper <jackson@ximian.com>
11611 * xaml.cpp: Implement StaticResource element syntax.
11613 2009-02-18 Jeffrey Stedfast <fejj@novell.com>
11615 * geometry.h (class PathGeometry): Don't autocreate the
11616 FiguresProperty until we can figure out why it breaks the PDC
11619 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
11621 * mediaelement.h: We always want OnPropertyChanged for
11622 PositionProperty. Fixes seeking to start/0.
11624 * dependencyproperty.g.cpp: Regenerated.
11626 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
11628 * mediaelement.cpp: ctor: Initialize flags correctly.
11630 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
11634 * pipeline-asf.cpp:
11635 * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
11636 make sled (glib 2.10) happy.
11638 2009-02-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
11644 * mediaelement.cpp: Initial implementation of
11648 * cbinding.cpp: Regenerated.
11650 2009-02-18 Alan McGovern <amcgovern@novell.com>
11655 * animation.cpp: Storyboards are considered 'children' if they
11656 ever were attached as a child of another timeline. The
11657 current status doesn't appear to matter.
11658 (StoryboardTest.RemoveChildThenStart).
11660 2009-02-18 Stephane Delcroix <sdelcroix@novell.com>
11662 * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
11665 2009-02-17 Chris Toshok <toshok@ximian.com>
11667 * text.cpp (TextBlock::TextBlock): remove this hack.
11669 2009-02-17 Chris Toshok <toshok@ximian.com>
11671 * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
11672 to the SelectedText case, and also don't perform the remaining
11673 operations if g_utf8_to_ucs4_fast fails.
11675 2009-02-17 Jeffrey Stedfast <fejj@novell.com>
11677 * dependencyobject.cpp: Now takes an only_changed argument; if
11678 true, then only return the properties which have been
11679 changed (plus any values which have been auto-created).
11681 * mediaelement.cpp (MediaElement::MediaElement): Set
11682 BufferingTimeProperty and PositionProperty in the ctor, we can't
11683 use DefaultValue nor AutoCreateValue for these since they need to
11684 be returned by ReadLocalValue() immediately after instantiating a
11685 new MediaElement object.
11687 * media.h (class MediaAttribute): Set managed namespaces for
11688 MediaAttribute and MediaAttributeCollection, we have internal
11689 managed implementations of these now.
11691 * text.h (class TextBlock): Changed default LineHeightProperty
11692 value from NaN to 0.0 (docs say NaN is the default, but not
11693 according to the unit tests).
11695 * textbox.h (class TextBox): Changed default TextProperty value
11696 from "" to null (docs say "" is the default, but not according to
11699 * media.cpp (Image::Image): Fix the SourceProperty to be
11702 * shape.cpp (Polygon::Polygon): Don't set a point
11703 collection. We'll make it autocreated instead.
11704 (Polyline::Polyline): Same.
11706 * geometry.h (class PathFigure): Set the default value of
11707 IsFilledProperty to true.
11708 (class PathGeometry): AutoCreate the FiguresProperty.
11709 (class PolyBezierSegment): AutoCreate the PointsProperty.
11710 (class PolyLineSegment): AutoCreate the PointsProperty.
11711 (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
11713 * deployment.h (class AssemblyPart): Set the default value of
11714 AssemblyPart::SourceProperty to "".
11716 * mediaelement.h: Set the default value of CurrentState to Closed.
11718 * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
11719 Markers or Attributes properties, these are autocreated.
11721 2009-02-17 Alan McGovern <amcgovern@novell.com>
11723 * animation.cpp: Missed out on a "!" when changing from
11724 GetIsChild to GetIsRootStoryboard
11726 2009-02-17 Alan McGovern <amcgovern@novell.com>
11729 * cbinding.cpp: Regenerated
11732 * animation.cpp: Add *WithError functions so that storyboards
11733 can throw the right exceptions when they are not the root
11736 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11738 * mediaelement.cpp: Add some null checks.
11740 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11743 * mediaelement.cpp: Move bitfields into our flags field.
11744 Remove allow_downloads and related methods, no longer used.
11746 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11749 * mediaelement.cpp: Remove GetDownloaderPolicy, not used
11752 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11758 * mediaelement.cpp: Make SetSource (Stream) work again.
11760 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11767 * pipeline-ffmpeg.h:
11768 * yuv-converter.cpp:
11769 * pipeline-ffmpeg.cpp: Update according to new pipeline api.
11779 * pipeline-asf.cpp:
11780 * mediaelement.cpp:
11781 * mms-downloader.h:
11782 * mms-downloader.cpp: Rework pipeline to be async to support
11789 * type-generated.cpp:
11790 * dependencyproperty.g.cpp: Regenerated.
11792 * codec-version.h.in: Bump codec abi.
11794 * downloader.cpp: Include uri.h.
11796 * downloader.h: Add accessor for failed_msg.
11799 * enums.cpp: Rename MediaElementState to MediaState.
11801 * mutex.h: Added, a pthread implementation of a mutex allowing
11804 * template.h: Inlcude xaml.h and add a forward declaration of
11807 * window.h: Add a forward declaration of MoonWindow.
11809 * src.mdp: Updated.
11811 * dependencyobject.h:
11812 * dependencyobject.cpp: Added EVENTHANDLER macro. Added
11813 support for emititng events from other than the main thread
11814 (by marshalling the event emission to the main thread).
11816 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11818 * deployment.cpp: Use printf instead of g_warning for a
11819 message which is always printed. Makes it less annoying to
11820 break on g_log while debugging.
11822 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11826 * type-generated.cpp: Regenerate.
11828 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11833 * mediaelement.cpp: Remove MediaErrorEventArgs.
11835 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11837 * debug.h: Added LOG_MP3.
11839 * runtime.cpp: Surface ctor: set the surface of the current
11840 deployment to the ourself.
11842 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11844 * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
11846 * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
11848 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11851 * runtime.cpp: CreateDownloader: take an EventObject instead
11854 2009-02-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
11857 * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
11859 2009-02-17 Atsushi Enomoto <atsushi@ximian.com>
11861 * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
11862 Fixed type of ArcSegment::Size from Point to Size.
11864 2009-02-16 Jeffrey Stedfast <fejj@novell.com>
11866 * text.h: Default TextBlock font size seems to be 11px in SL2 as
11867 opposed to 14.667 in SL1.
11869 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11873 * mediaelement.cpp: Move image_brush_compute_pattern_matrix
11874 from media.cpp/mediaelement.cpp to brush.h to avoid having
11875 two declarations of the same method.
11877 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11879 * brush.cpp: Include mediaplayer.h here.
11881 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11883 * dependencyobject.cpp: Change our g_error into a g_warning.
11884 Reffing an object with refcount = 0 can actually happen now.
11886 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11888 * dependencyobject.cpp: AddTickCallInternal: if we don't have
11889 a surface, get it from the deployment.
11891 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11893 * dependencyobject.cpp: EventObject. unref and null out the
11894 deployment in the dtor instead of in Dispose.
11896 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11898 * dependencyobject.h:
11899 * dependencyobject.cpp: Add
11900 DependencyObject::RemoveAllHandlers.
11902 2009-02-16 Alan McGovern <amcgovern@novell.com>
11904 * animation.cpp: Remove the calls to ref/unref as they are
11907 2009-02-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
11909 * libmoon.h: Don't include playlist.h here. Fixes issues with
11910 the plugin when playlist.h includes expat.
11912 2009-02-16 Alan McGovern <amcgovern@novell.com>
11917 * animation.cpp: Implement the managed side of
11918 Storyboard.GetCurrentState ().
11920 2009-02-16 Alan McGovern <amcgovern@novell.com>
11923 * type.h.in: The renaming changes in r126921 break the build
11924 if the generator is run because type.h.in didn't contain the
11925 CopyProperties prototype.
11927 2009-02-16 Geoff Norton <gnorton@novell.com>
11930 * downloader.h: Downloaders created in javascript can suffer the
11931 same shared-cache firefox bug, so we need to expose the buffer
11932 to the image layer in case this is the place.
11934 2009-02-14 Jeffrey Stedfast <fejj@novell.com>
11936 * dependencyobject.cpp (DependencyObject::GetProperties): New
11937 method to get an array of all properties on the object (including
11938 currently attached properties).
11940 * type.cpp (Type::CopyProperties): Renamed from GetProperties()
11941 and changed what it does a bit. Now takes an 'inherited' argument
11942 and returns a GHashTable of properties keyed by GetHashKey().
11944 2009-02-14 Chris Toshok <toshok@ximian.com>
11946 * dependencyobject.h, dependencyobject.cpp: rename
11947 "current_values" as "local_values". current_values now means
11948 "local values + autocreated values". At this point, add
11949 GetCurrentValues which returns a new hashtable containing a union
11950 of both sets, and add FreeCurrentValues to destroy it.
11952 * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
11953 DependencyObject::GetLocalValues instead of GetCurrentValues.
11955 2009-02-13 Chris Toshok <toshok@ximian.com>
11957 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11958 fix a number of logical errors. gets inlines properly inheriting
11961 2009-02-14 Jeffrey Stedfast <fejj@novell.com>
11963 * type.cpp (Type::GetProperties): New method to get an array of
11964 DependencyProperties for a Type.
11966 2009-02-13 Geoff Norton <gnorton@novell.com>
11968 * playlist.cpp: Check these string with g_ascii_str* as well.
11969 Also these should be case-insensitive checks.
11971 2009-02-13 Jeffrey Stedfast <fejj@novell.com>
11973 * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
11974 should be ints, not doubles.
11976 * text.h (class Glyphs): Set the DefaultValues for
11977 UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
11979 * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
11980 SetUriSource("") (it's already the DefaultValue).
11982 2009-02-13 Geoff Norton <gnorton@novell.com>
11984 * media.cpp|h: Ensure we're comparing magics with unsigned values, and
11985 fix a logic bug that prevented us from proplery writing progressive pixbuf
11988 2009-02-13 Jeffrey Stedfast <fejj@novell.com>
11990 * multiscaleimage.h (class MultiScaleImage): Rename the
11991 SubImageCollectionProperty to SubImagesProperty to match
11994 2009-02-13 Geoff Norton <gnorton@novell.com>
11996 * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
11998 * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
11999 does when running in the browser profile.
12001 2009-02-13 Alan McGovern <amcgovern@novell.com>
12003 * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
12004 than casting to a 64bit then 32bit value.
12006 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
12008 * multiscaleimage.h|cpp: drop the friend here too
12010 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
12012 * tilesource.h: drop the friends
12014 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
12016 * Makefile.am: remove deepzoomimagetilesource.h from the
12017 include_headers. no one should code against it.
12019 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
12021 * multiscaleimage.cpp:
12022 * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
12024 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
12026 * multiscaleimage.cpp: timing macros
12028 2009-02-13 Stephane Delcroix <sdelcroix@novell.com>
12030 * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
12031 paint at once to avoid flickering.
12033 2009-02-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
12035 * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
12036 a crash when downloading mms streams (due to not having
12039 2009-02-12 Geoff Norton <gnorton@novell.com>
12041 * playlist.cpp: Ensure that we don't poke around in random memory
12042 if we have an invalid entry in our parser.
12044 2009-02-12 Alan McGovern <amcgovern@novell.com>
12046 * value.cpp: Add an assert in case the gchandle value is out
12049 2009-02-12 Alan McGovern <amcgovern@novell.com>
12051 * value.cpp: Fix compile error on x64 when casting a void* to
12054 2009-02-12 Alan McGovern <amcgovern@novell.com>
12056 * value.cpp: Managed objects are stored in native as
12057 GCHandles. Use the mono api to get the target of that
12058 GCHandle so that they can be compared correctly in
12059 value.cpp. Remove hack in ItemCollection.cs which worked
12062 2009-02-12 Stephane Delcroix <sdelcroix@novell.com>
12064 * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
12065 public, drop a friend.
12066 * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
12069 2009-02-12 Stephane Delcroix <sdelcroix@novell.com>
12071 * deepzoomtilesource.cpp: some g_ascii love
12073 2009-02-11 Chris Toshok <toshok@ximian.com>
12075 * text.h: Inline's fontsize default value is 11. looks like
12076 textblock is the only case where it differs.
12078 2009-02-11 Jeffrey Stedfast <fejj@novell.com>
12080 * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
12082 * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
12083 blink timeout from the GtkSettings.
12084 (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
12085 things seem to have been debugged enough now.
12086 (TextBox::CursorLineBegin): New convenience method.
12087 (TextBox::CursorLineEnd): Same.
12088 (TextBox::OnMouseLeftButtonDown): Implemented double and
12089 triple-click. Capture mouse if single-click.
12090 (TextBox::OnMouseLeftButtonUp): Release mouse capture.
12091 (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
12092 beginning of the line.
12094 2009-02-11 Alan McGovern <amcgovern@novell.com>
12111 * mediaelement.cpp:
12112 * multiscaleimage.h:
12113 * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
12114 use the ::Render codepaths instead of it's own custom
12115 codepath. Added an extra parameter to ::Render () to specify
12116 whether or not the paths appended to the cairo_t should be
12117 filled/stroked/clipped. This allows a whole bunch of NUnit
12121 * frameworkelement.cpp: Add an extra parameter to ::Render ()
12122 to specify whether or not the paths appended to the cairo_t
12123 should be filled/stroked/clipped so it can be shared with
12124 the managed hittesting.
12125 Switch FindElementsInHostCoordinates to use the ::Render
12126 codepaths instead of it's own custom codepath. This allows a
12127 whole bunch of NUnit tests to pass.
12129 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
12160 * contentcontrol.h:
12161 * multiscaleimage.h:
12162 * frameworkelement.h:
12163 * dependencyobject.h:
12164 * multiscalesubimage.h:
12165 * dependencyproperty.g.cpp:
12166 * deepzoomimagetilesource.h: Make DP backing fields const.
12168 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
12187 * mediaelement.cpp:
12188 * contentcontrol.cpp:
12189 * dependencyobject.h:
12190 * multiscaleimage.cpp:
12191 * dependencyobject.cpp:
12192 * frameworkelement.cpp:
12193 * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
12194 dp and id fields private and add accessors.
12196 2009-02-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
12248 * mediaelement.cpp:
12249 * contentcontrol.h:
12250 * multiscaleimage.h:
12251 * contentcontrol.cpp:
12252 * frameworkelement.h:
12253 * dependencyobject.h:
12254 * multiscaleimage.cpp:
12255 * dependencyproperty.h:
12256 * multiscalesubimage.h:
12257 * frameworkelement.cpp:
12258 * dependencyobject.cpp:
12259 * dependencyproperty.cpp:
12260 * dependencyproperty.g.cpp:
12261 * deepzoomimagetilesource.h:
12262 * deepzoomimagetilesource.cpp: Change our static
12263 DependencyProperty backing fields to store an integer id
12264 instead of an instance to a DependencyProperty. This way we
12265 can have true per-deployment dependency properties.
12267 2009-02-11 Alan McGovern <amcgovern@novell.com>
12274 * frameworkelement.cpp: Commit some more updates to the
12275 managed hittesting.
12277 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
12279 * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
12280 xchatitis in TextBox.
12282 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
12284 * fontfamily.h (struct FontFamily): Implemented != operator.
12286 * text.cpp (Inline::Equals): Fixed the fontfamily check.
12288 * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
12290 * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
12291 dispose autocreated values too.
12292 (DependencyObject::RemoveAllListeners): Same here.
12293 (DependencyObject::RegisterAllNamesRootedAt): And here.
12294 (DependencyObject::UnregisterAllNamesRootedAt): Here too.
12296 2009-02-10 Jeffrey Stedfast <fejj@novell.com>
12298 * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
12299 GetSubtreeObject so that we can auto-create our Children property
12300 and set it if it hasn't already been set.
12302 * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
12303 We need to clear the LocalProvider value as well, if there is
12304 one. Also, don't allow setting a Value* with a null
12305 DependencyObject if it is an autocreate property.
12306 (DependencyObject::ClearValue): Clear the LocalProvider value too.
12307 (DependencyObject::SetSurface): SetSurface on autocreated values too.
12309 * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
12310 Now takes another bool arg to specify whether it is allowed to
12311 autocreate new DP values.
12312 (DependencyProperty::Register): Updated.
12313 (DependencyProperty::RegisterFull): Updated, now also takes an
12316 * provider.cpp (AutoCreatePropertyValueProvider): A new provider
12317 which sits below DefaultValue.
12319 * *.cpp (*::ctor): Remove calls to SetValue()
12321 * *.h: Added AutoCreateValue where appropriate.
12323 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
12325 * color.h: fabs is in math.h.
12327 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
12330 * list.cpp: Add a simple ArrayList implementation.
12335 * type-generated.cpp:
12336 * dependencyproperty.g.cpp: Regenerated.
12338 * dependencyproperty.h:
12339 * dependencyproperty.cpp: RegisterCustom: removed, no longer
12340 used anywhere. RegisterNull: incorporated into
12341 RegisterFull. Register[Full]: take another Types* argument
12342 so that the registration doesn't have to look it up in the
12343 deployment for every call (this way we can later register
12344 dependency properties in the Types ctor). Also move any
12345 logic from the individial Register overloads to
12346 RegisterFull, this way we don't have different logic
12347 depending on the overload.
12350 * type.h.in: Keep a list of all properties for all types on
12351 the Types* instance, and remove the custom properties (hash
12352 and list) on the Type* instance, keeping only one hash
12353 table for both native and custom properties.
12355 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
12362 * file-downloader.h: Only use G_BEGIN/END_DECLS around c
12363 methods (and in files with no c methods remove completely).
12365 2009-02-10 Jackson Harper <jackson@ximian.com>
12367 * xaml.h|cpp: New method for getting the key of an element
12369 - Pass the element instance data for the values to set property
12370 when we have one, otherwise pass NULL.
12372 2009-02-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
12374 * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
12375 process: don't check if DPs have been created before
12378 2009-02-10 Alan McGovern <amcgovern@novell.com>
12380 * border.cpp: Corner rounding is now taken into account when
12381 hittesting a Border
12383 2009-02-10 Fernando Herrera <fherrera@novell.com>
12385 * value.cpp: Fix GetIsNull call casting in the copy
12388 2009-02-09 Chris Toshok <toshok@ximian.com>
12390 * value.cpp: call SetIsNull everywhere so we can always check
12393 2009-02-09 Alan McGovern <alan.mcgovern@gmail.com>
12398 * frameworkelement.cpp: Three more of the NUnit tests are now
12399 passing for FindElementsInHostCoordinates
12401 2009-02-09 Alan McGovern <alan.mcgovern@gmail.com>
12408 * frameworkelement.cpp: Commit some more of the hittest code.
12410 2009-02-09 Jeffrey Stedfast <fejj@novell.com>
12412 * type.h.in (class Types): Added a private static field to record
12413 whether or not the static DP's have already been registered.
12415 2009-02-09 Geoff Norton <gnorton@novell.com>
12417 * deployment.cpp: Support enabling coreclr for moonlight so we
12418 can start dogfooding this.
12420 2009-02-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
12422 * deployment.cpp: Remove redundant call to SetObjectType.
12424 2009-02-08 Chris Toshok <toshok@ximian.com>
12426 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12427 add inheritance of FrameworkElement::DataContextProperty.
12429 * frameworkelement.[cpp,h]: remove all the databinding stuff from
12430 here - it's all handled in managed code now.
12432 * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
12434 * cbinding.[cpp,h]: regen.
12436 2009-02-07 Sebastien Pouliot <sebastien@ximian.com>
12438 * xaml.cpp: Adjust lookup to find StaticResources defined in
12439 a ResourceDictionary. re-fix parsing of generic.xaml for the
12440 SL toolkit (unit tests)
12442 2009-02-07 Larry Ewing <lewing@novell.com>
12444 * border.cpp (Border::ArrangeOverride):
12445 * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
12448 * grid.cpp (Grid::MeasureOverride): distribute the allocation
12449 across auto dimensions when it makes sense.
12451 2009-02-07 Larry Ewing <lewing@novell.com>
12453 * grid.cpp (Grid::MeasureOverride): don't give our whole
12454 allocation to the first column.
12456 2009-02-07 Sebastien Pouliot <sebastien@ximian.com>
12458 * stylus.cpp: Committed a variation of Geoff patch to fix
12459 the crash when running moon-unit
12461 2009-02-07 Geoff Norton <gnorton@novell.com>
12463 * cbinding.cpp|h: Regenerate
12464 * deployment.cpp|h: API cleanup
12465 * downloader.cpp|h: Generate some code that doesn't need to be
12466 hand maintained. Clean up some API to prevent a crash when
12467 unregistering downloaders.
12469 2009-02-07 Geoff Norton <gnorton@novell.com>
12475 * size.h: Account for an epsilon when comparing these structures
12476 to avoid erroneously emitting false results.
12478 2009-02-07 Jeffrey Stedfast <fejj@novell.com>
12480 * text.cpp (TextBlock::GetTextInternal): Now takes an
12481 InlineCollection argument.
12482 (TextBlock::OnPropertyChanged): Pass args->new_value to
12483 GetTextInternal() so that we avoid unnecesary recursion in the
12484 case that we're being called as a result of a GetValue() of the
12486 (TextBlock::OnCollectionChanged): Updated.
12487 (TextBlock::OnCollectionItemChanged): Updated.
12489 2009-02-06 Larry Ewing <lewing@novell.com>
12491 * shape.cpp (Shape::ArrangeOverride): take alignment into account
12492 when Stretch == None.
12494 * media.cpp (Image::ArrangeOverride):
12495 * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
12496 into account when Stretch == None.
12498 * grid.cpp, grid.h: keep track of the automagical w/h make handle
12499 it properly when alignment is not stretch. Fixes leaf control
12500 placement on "the moment".
12502 2009-02-06 Larry Ewing <lewing@novell.com>
12506 * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
12508 * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
12510 * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
12513 2009-02-06 Larry Ewing <lewing@novell.com>
12515 * control.cpp (Control::Control): remove bad setting of
12518 2009-02-06 Jackson Harper <jackson@ximian.com>
12520 * xaml.cpp|h: Add a new method for retrieving the control template
12521 parent of a xaml element instance (called from unmanaged).
12522 - quick hack to force binding expressions to be parsed in managed.
12524 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
12526 * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
12527 for *+/- and . to our Key enum needed for the DLR Console app.
12529 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
12531 * Reverted previous commit as I goofed the unit test on
12532 Windows. Once I fixed it, the logic I worked so hard to achieve
12535 2009-02-06 Larry Ewing <lewing@novell.com>
12537 * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
12538 we are the toplevel.
12540 2009-02-06 Jeffrey Stedfast <fejj@novell.com>
12542 See InkPresenter's ClearValue unit test
12544 1. Calling SetValue() in ctors was gross.
12545 2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
12546 3. it broke things if ClearValue was used and/or if the properties
12549 * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
12550 method to query for a default property value as used by the
12551 PropertyValueProviders.
12552 (DependencyObject::ReadLocalValue): Read the value directly from
12555 * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
12556 Call DependencyObject::GetDefaultValue() to try and get a default
12557 value. If successful, set it on the current_values hash table.
12559 * *.cpp: Fixed all classes that had ctors that called SetValue()
12560 to instead override GetDefaultValue().
12562 2009-02-06 Chris Toshok <toshok@ximian.com>
12564 * uielement.cpp (UIElement::SetSurface): if we have a subtree
12565 object (which is a UIElement), set its surface too. Fixes the
12566 ContentPresenter textblocks in ItemsControl.
12568 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
12570 * deepzoomimagetilesource.cpp: set subimage width/height
12571 * multiscaleimage.cpp: do not download subimages .xml, we can work
12574 2009-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
12577 * cbinding.cpp: Regenerated.
12579 * dependencyobject.h:
12580 * dependencyobject.cpp:
12581 DependencyObject::ProviderValueChanged: Add a MoonError
12582 argument to be able to marshal managed exceptions through
12583 native code. ClearValue: Add a MoonError argument to match
12584 the signature of ProviderValueChanged.
12586 * dependencyproperty.h: Make NativePropertyChangedHandler
12587 take a MoonError argument to be able to marshal managed
12588 exceptions through native code.
12591 * error.cpp: Add a gchandle_ptr field to hold managed
12594 * frameworkelement.h:
12595 * frameworkelement.cpp: Update according to ClearValue
12598 * provider.cpp: Update according to ProviderValueChanged
12601 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
12603 * morton-layout-table.inc: pre-computed table for Morton Layout
12606 2009-02-06 Stephane Delcroix <sdelcroix@novell.com>
12608 * multiscaleimage.cpp: fix the most annoying rendering issue for
12611 2009-02-06 Jackson Harper <jackson@ximian.com>
12613 * xaml.cpp: Store a list of resource dictionaries on the xaml
12614 context, so control templates can use these to lookup resources.
12615 Also go back to using the XamlElementInstance's for walking up the
12616 tree, this allows us to parse before parenting items.
12618 2009-02-05 Geoff Norton <gnorton@novell.com>
12620 * deepzoomimagetilesource.cpp|h: We don't want to download all of
12621 the sub images at creation time, so allow them to defer, otherwise
12622 we might fire off hundreds of downloaders at once.
12624 2009-02-05 Jackson Harper <jackson@ximian.com>
12626 * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
12629 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12631 * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
12632 to be more consistent with the managed API.
12634 * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
12636 2009-02-05 Geoff Norton <gnorton@novell.com>
12638 * multiscaleimage.cpp|h: We must emit this event on the main thread
12640 2009-02-05 Alan McGovern <alan.mcgovern@gmail.com>
12649 * frameworkelement.h:
12650 * frameworkelement.cpp: Create an unmanaged version of
12651 FindElementsInHostCoordinates
12653 2009-02-05 Geoff Norton <gnorton@novell.com>
12656 * dependencyproperty.g.cpp:
12657 * type-generated.cpp: Regenerate
12658 * collection.h: Generate bindings for the multiscalesubimage collection.
12659 * deepzoomimagetilesource.cpp: Trigger a download when we get our URI
12660 * multiscaleimage.cpp|h: Hide SubImages in a internal property until
12661 we can marshal collections as ReadOnly into managed automatically.
12662 Also emit the ImageOpenSucceeded event when we're done parsing.
12664 2009-02-05 Jackson Harper <jackson@ximian.com>
12666 * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
12667 So I've added an ignore_case flag that the parser can use.
12669 2009-02-05 Jackson Harper <jackson@ximian.com>
12671 * type.cpp: As far as I can tell, Type::Find does not need to be
12672 case sensitive. This fixes "Double" being found when we register
12675 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12677 Save some additional state for an optimization I'd like to do.
12679 * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
12680 character offset for each TextLine.
12681 (TextLayout::LayoutNoWrap): Same.
12682 (TextLayout::LayoutWrap): Here too.
12684 2009-02-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
12686 * deployment.cpp: Fix typo.
12688 2009-02-05 Alan McGovern <alan.mcgovern@gmail.com>
12690 * frameworkelement.cpp: Reverting r125649 as it's incorrect.
12692 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12694 * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
12695 ClearSelection() because we'll be syncing the SelectedText in
12696 SyncAndEmit() anyway.
12698 * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
12699 exit when inptr >= inend rather than when *inptr == 0.
12700 (TextLayout::GetCursorFromXY): Slightly improved.
12702 2009-02-05 Sebastien Pouliot <sebastien@ximian.com>
12704 * dependencyobject.cpp|h: Let GetLogicalParent optionally report
12705 a collection for it's parent. This is needed in some cases like
12706 a Style inside a ResourceDictionary that defines "{StaticResource..."
12707 that other Style needs (e.g. SL toolkit unit tests)
12708 * xaml.cpp: Adjust lookup to find StaticResources defined in
12709 a ResourceDictionary
12711 2009-02-05 Stephane Delcroix <sdelcroix@novell.com>
12713 * multiscaleimage.cpp: Renders subimages
12715 2009-02-05 Jeffrey Stedfast <fejj@novell.com>
12717 Memory Optimization:
12719 * textbox.cpp (append_runs): Updated. Also fixed a bug which would
12720 sometimes append empty TextRuns to the list.
12722 * text.cpp (TextBlock::Layout): Updated. No longer need to use the
12723 retarded TextRun linebreak ctor.
12725 * layout.cpp (TextRun): Changed TextRuns a bit, all members are
12726 now private but accessors have been added to get the values. Get
12727 rid of the crlf field and ctor params. We also no longer "strdup"
12728 for the ucs4 ctor since TextBox is the only consumer of that API
12729 and it is not constructed using a temp buffer.
12730 (TextSegment): Updated a bit for TextRun changes.
12731 (TextLayout): Updated for TextRun changes.
12733 2009-02-05 Sebastien Pouliot <sebastien@ximian.com>
12735 * style.cpp|h: Remove "style-hack" from SetterBaseCollection
12736 since that collection has no need to know about the style itself.
12737 Simplify the API a bit.
12738 * xaml.cpp: Introduce an hack for SetterBase tp workaround the
12739 fact that the current parser adds elements to the collections
12740 before setting their properties (and a SetterBase would seal
12741 itself when added to a collection).
12743 2009-02-05 Jb Evain <jbevain@novell.com>
12745 * propertypath.h: new type.
12746 * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
12747 * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
12748 * animation.h: change type of Storyboard.TargetPropertyProperty
12749 from string to PropertyPath.
12750 * animation.cpp: update accordingly.
12751 * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
12752 * dependecyproperty.cpp: update accordingly.
12753 * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
12755 2009-02-05 Jackson Harper <jackson@ximian.com>
12757 * xaml.cpp|h: Use the kind for getting content property names.
12759 2009-02-04 Chris Toshok <toshok@ximian.com>
12761 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12762 fix property inheritance to walk back up the tree (instead of just
12763 looking at the direct parent.) Also, we can't use the parent's
12764 kind directly, we have to use parent->Is().
12766 2009-02-04 Larry Ewing <lewing@novell.com>
12768 * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
12769 apply when the final value is not equal to the measured value.
12771 2009-02-04 Jackson Harper <jackson@ximian.com>
12773 * xaml.cpp|h: When setting properties pass in the
12774 XamlElementInstance.
12775 - Function so named items can be looked up from managed.
12776 * cbinding.cpp|h: regen.
12778 2009-02-04 Aaron Bockover <abockover@novell.com>
12780 * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
12781 bug where the blue channel was dropped in sc#r,g,b
12783 2009-02-04 Sebastien Pouliot <sebastien@ximian.com>
12785 * collection.cpp|h: Override AddWithError on UIElementCollection
12786 to return an error on duplicate elements
12788 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
12790 * color.cpp (read_next_double): Use g_ascii_strtod().
12791 (color_from_str): Use g_ascii_strcasecmp().
12793 * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
12795 2009-02-04 Larry Ewing <lewing@novell.com>
12797 * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
12798 case we implement star columns in a matching manor.
12800 * mediaelement.cpp (MediaElement::Render): disable mediaelement
12801 pixel snapping for now, we'll deal with this at a higher level.
12803 2009-02-04 Chris Toshok <toshok@ximian.com>
12805 * type.cpp (type_is_dependency_object): no need to c&p the entire
12806 method, just call Type::IsSubclassOf with the kinds.
12808 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
12810 * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
12811 TimeManager's timeout functions instead of calling g_timeout_add()
12814 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12816 * multiscaleimage.cpp: prepare the rendering for subimages.
12818 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12820 * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
12822 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12824 * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
12827 2009-02-04 Jeffrey Stedfast <fejj@novell.com>
12829 * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
12830 to false. Get rid of maxlen state, it's not needed.
12831 (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
12832 class member variable.
12833 (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
12834 useful for mouse events too.
12835 (TextBox::KeyPressFreeze): Removed.
12836 (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
12837 true, get the cursor from the x,y coordinates and update the
12838 selection to be zero-length starting at the cursor position.
12839 (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
12840 (TextBox::OnMouseMove): If we are in the 'selecting' state,
12841 translate current mouse coordinates into a new cursor position and
12842 update selection start/length.
12843 (TextBoxView::GetCursorFromXY): New helper method.
12844 (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
12846 * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
12848 2009-02-04 Jackson Harper <jackson@ximian.com>
12850 * template.cpp|h: Add a function for creating xaml template
12853 2009-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
12856 * audio-pulse.cpp: More SetCurrentDeployments.
12858 2009-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
12860 * audio.cpp: One more SetCurrentDeployment.
12862 2009-02-04 Alan McGovern <amcgovern@novell.com>
12864 * frameworkelement.cpp: Fixed hit tests which didn't do what
12865 i meant them to do and added new tests. Panels should not
12866 swallow a click when hit testing, so we should never abort
12869 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12871 * multiscalesubimage.cpp: fix the source uri in the subimage
12872 ctor. the source for the subimage is now parsed.
12874 2009-02-04 Alan McGovern <amcgovern@novell.com>
12884 * type-generated.cpp: Hook up the managed hittesting code to
12885 the native hit testing code.
12887 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12889 * multiscaleimage.cpp: iterate the collection and not the GList
12892 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12894 * multiscalesubimage.h|cpp:
12895 * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
12896 so we can compute the UriSource based on parent's one
12898 2009-02-04 Stephane Delcroix <sdelcroix@novell.com>
12900 * collection.cpp: MultiScaleSubImageCollection ctor
12902 2009-02-03 Larry Ewing <lewing@novell.com>
12904 * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
12905 the toplevel logic.
12907 * usercontrol.cpp: fix missing modification.
12909 2009-02-03 Larry Ewing <lewing@novell.com>
12911 * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
12912 clip by the margin.
12914 2009-02-03 Geoff Norton <gnorton@novell.com>
12916 * frameworkelement.cpp (Arrange): If we have a negative margin,
12917 it moves our layout slot, instead of clipping it, as such we need
12918 to adjust the clipping path accordingly in these cases to accomodate
12921 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12923 * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
12924 ReadOnly status afterall.
12925 (TextBoxView::OnModelChanged): Same.
12926 (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
12929 * control.h: Control's default FontSize is 11, not 14.666 like
12932 2009-02-03 Larry Ewing <lewing@novell.com>
12934 * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
12935 when we arrange. Fixes the rectangle bg on pdc.
12937 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12939 * textbox.cpp (TextBox::OnPropertyChanged): Set the default
12940 SelectionBackground and SelectionForeground brushes if
12941 SelectionLength gets to be >0.
12942 (TextBox::TextBox): Don't set them here. Initialize a new state
12943 variable, cursor_column to 0.
12944 (TextBox::CursorDown): Update cursor_column and fix some
12945 inconsistencies with Microsoft's logic. Renamed and c++'ified from
12947 (TextBox::CursorUp): Same idea here.
12948 (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
12949 (TextBox::CursorPrevWord): Same idea.
12950 (TextBox::KeyPress*Down): Save/Restore cursor_column state after
12951 updating SelectionStart/Length properties.
12952 (TextBox::KeyPress*Up): Same.
12953 (TextBox::KeyPressHome): We can set cursor_column to 0 here.
12954 (TextBox::OnPropertyChanged): If Text, SelectedText,
12955 SelectionStart or SelectionLength chanegs, we need to reset
12956 cursor_column to -1 (aka "unknown").
12958 2009-02-03 Larry Ewing <lewing@novell.com>
12960 * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
12961 and apply the finalsize adjustments to the existing values.
12962 Handle the empty row/col case specially.
12964 * usercontrol.cpp: revert accicdental diabling (for now).
12966 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12968 * textbox.cpp (TextBuffer::Replace): Do the right thing if length
12969 goes beyond the end of the buffer.
12970 (TextBuffer::Cut): Same.
12972 * layout.cpp (RenderSegment): Extend the selection line
12973 Silverlight's TextBox does if the selection crosses over the CRLF
12974 sequence at the end of a line.
12976 2009-02-03 Larry Ewing <lewing@novell.com>
12980 * frameworkelement.cpp: handle the specified size case as well.
12982 2009-02-03 Jb Evain <jbevain@novell.com>
12984 * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
12987 2009-02-03 Jeffrey Stedfast <fejj@novell.com>
12989 * textbox.cpp: Rewrote selection logic and vastly simplified
12990 cursor movement along the way.
12992 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
12997 * dependencyproperty.h:
12998 * dependencyproperty.cpp: Remove the need for
12999 DependencyProperty to be a friend class of Type.
13001 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13003 * multiscalesubimage.h: DefaultValues for DPs.
13005 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13007 * deepzoomimagetilesource.h|cpp:
13008 * multiscaleimage.h|cpp:
13009 * multiscalesubimage.h|cpp: fill the subimages on MSI
13011 2009-02-03 Sebastien Pouliot <sebastien@ximian.com>
13013 * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
13014 because that was not part of the API before then (and it breaks
13017 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
13021 * type.h.in: Type: don't make Types a friend class of Type.
13023 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
13026 * animation.cpp: Remove animation_init, it's empty.
13028 * audio.cpp: We need to set the current deployment on the
13029 audio thread (but without touching mono at all).
13033 * type-generated.cpp:
13034 * dependencyproperty.g.cpp: Regenerated.
13036 * dependencyobject.h:
13037 * dependencyobject.cpp: Move object accounting and delayed
13038 unref handling to Deployment.
13040 * dependencyproperty.h: Remove DependencyProperty::Shutdown,
13043 * deployment.cpp: Add a SetCurrent overload which allows us
13044 to specify whether the current appdomain should be updated
13045 too. GetCurrent: Never access mono if the current domain is
13046 NULL. Move object tracking and delayed unrefs here.
13048 * deployment.h: Add a SetCurrent overload which allows us to
13049 specify whether the current appdomain should be updated
13050 too. Move object tracking and delayed unrefs here.
13052 * runtime.cpp: Move object tracking reports to Deployment.
13053 Remove unnecessary static init and shutdown methods.
13057 * type.h.in: Completely remove all static Type
13058 initialization, we now rely on the Types* on the current
13061 2009-02-03 Sebastien Pouliot <sebastien@ximian.com>
13063 * style.cpp: Remove extra logic and comment the main "bad" hack
13064 still required not to cause regressions. Affected test cases
13065 will marked as known issues until the XAML parser issue (which
13066 is adding elements to collections before setting their properties)
13069 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
13071 * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
13073 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
13075 * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
13076 destruction the name might not be available anymore, so
13077 loop over the entire hash tables looking for the object to
13078 remove instead of trying to lookup with a null key. Fixes a
13079 crash while running moon-unit.
13081 2009-02-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
13083 * xaml.cpp: Use property accessors on Type instead of
13084 accessing the fields.
13086 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13089 * runtime.h|runtime.cpp: new LOG_MSI macro.
13091 2009-02-03 Fernando Herrera <fherrera@novell.com>
13094 * runtime.h: Move moonlight_flags and runtime_flags to 64bits
13095 as we reached the 32bits limit for debug.
13097 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13099 * deepzoomimagetilesource.h|cpp: Parse Collections.
13101 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13103 * deepzoomimagetilesource.h|cpp: data structures to parse
13104 DZ images with subimages. Move the common parts of both ctors
13107 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13110 * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
13111 some methods and fields to the private section.
13113 2009-02-03 Stephane Delcroix <sdelcroix@novell.com>
13115 * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
13117 2009-02-02 Chris Toshok <toshok@ximian.com>
13119 * popup.h, popup.cpp: this inherits from FrameworkElement, not
13122 * dependencyobject.cpp (dispose_value): this method is doing *way*
13123 too much. we can't just blindly dispose of our values. they
13124 could be shared across multiple elements. don't even unref them
13125 here, as deleting the value does that.
13127 * type-generated.cpp: regen.
13129 2009-02-02 Larry Ewing <lewing@novell.com>
13131 * mediaelement.cpp:
13132 * media.cpp (Image::UpdateSize): update horrible hacks that are
13133 used when we are part of canvas until they can be removed
13136 2009-02-02 Larry Ewing <lewing@novell.com>
13138 2009-02-02 Chris Toshok <toshok@ximian.com>
13140 * enums.cpp (keyboard_navigation_mode_map): add
13141 (initialize_enums): add TabNavigation property handling, mapping
13142 to keyboard_navigation_mode_map.
13144 2009-02-02 Geoff Norton <gnorton@novell.com>
13147 * xaml.cpp: Inject ImageSource underneath BitmapImage so that
13148 custom xaml that attaches a ImageSource can work. Every
13149 ImageSource is a BitmapImage in SL2
13150 * type-generated.cpp:
13154 2009-02-02 Larry Ewing <lewing@novell.com>
13158 * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
13159 stretch back out to finalsize in the stretch case.
13161 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
13163 * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
13164 int because, duh, the range is -2 to 1, not 0 to 3 and so
13165 TextLine::crlf was being set to -2 instead of 2.
13166 (TextLayout::GetCursor): A minor tweak to get things to work if
13167 the cursor is right after the last char which is a \r.
13169 * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
13171 (move_down): Need to use a loop when advancing back to the
13172 previous column so we don't go beyond EOL.
13173 (move_up): Same, but more fixes as well.
13175 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
13177 * textbox.cpp: Moved all event handling back to TextBox since
13178 that's the focusable element.
13180 * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
13181 first Control subclass that we can focus.
13183 2009-02-02 Sebastien Pouliot <sebastien@ximian.com>
13185 * dependencyproperty.g.cpp:Regenerated
13186 * style.cpp|h: Use validators on Setter instead of overriding
13187 SetValueWithErrorImpl on SetterBase
13188 * validators.cpp|h: Addvalidator for checking sealed Setter
13190 2009-02-02 Larry Ewing <lewing@novell.com>
13192 * border.cpp (Border::Render): don't fill the whole are with the
13193 border brush only fill the BorderThickness.
13195 2009-02-02 Larry Ewing <lewing@novell.com>
13197 * textbox.cpp, textbox.h: first pass at implementing arrange and
13200 * text.cpp: request with padding too.
13202 2009-02-02 Chris Toshok <toshok@ximian.com>
13204 * textbox.h (class TextBox): store the contentElement as an
13205 instance field so we can update it in OnPropertyChanged.
13207 * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
13208 disgusting, and *SHOULD* be handled in the textbox template, but
13209 we can't handle it in ours in case people replace it. if the
13210 ContentElement template child has DP's named
13211 VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
13212 them based on the value of ours.
13213 (TextBox::OnPropertyChanged): handle property changes on our
13214 VerticalScrollBarVisibility/HorizontalScrollBarVisibility
13215 properties by proxying them to our contentElement.
13217 2009-02-02 Alan McGovern <amcgovern@novell.com>
13220 * bitmapimage.cpp: Image.Source defaults to a BitmapImage
13221 with a uri of string.empty.
13223 2009-02-02 Chris Toshok <toshok@ximian.com>
13225 * rect.h (struct Rect): we can be Grown by a negative amount. make
13226 sure we don't drop below 0 on width/height, since everything blows
13229 2009-02-02 Alan McGovern <amcgovern@novell.com>
13232 * dependencyproperty.g.cpp: The default value for
13233 Bitmap.ImageSource is an empty string.
13235 2009-02-02 Jeffrey Stedfast <fejj@novell.com>
13237 * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
13238 events when the selection or text changes. TextBoxView cannot
13239 depend on getting those events if things are changed
13241 (TextBox::KeyPressThaw): Don't ever bother with emitting
13242 ModelChanged events here, they'll be emitted in
13243 OnPropertyChanged(), now.
13244 (TextBoxView): We no longer listen to TextChanged or
13245 SelectionChanged events.
13246 (TextBoxView::ResetCursorBlink): New method to do all of the
13247 proper state checking to see if the cursor should be rendered
13248 which calls the appropriate Begin/Delay/EndCursorBlink() method.
13249 (TextBoxView::OnModelChanged): Updated to handle Text and
13250 Selection changes. Dropped CursorPosition because it is no longer
13252 (TextBoxView::OnFocusIn): Set focused to true before calling
13253 ResetCursorBlink().
13254 (append_runs): Don't forget to append the LineBreak to the Runs
13256 (TextBoxView::SetTextBox): Need to sync some additional state.
13258 2009-02-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
13260 * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
13261 already be in one, and DrainUnrefs isn't recursive anymore.
13263 2009-02-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
13265 * src.mdp: Updated to use new MD features (ChangeLog and log
13268 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
13270 * deepzoomimagetilesource.h|cpp: add a parsed_callback.
13271 * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
13274 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
13276 * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
13277 in GetTileLayer for missing tiles.
13279 2009-02-02 Stephane Delcroix <sdelcroix@novell.com>
13281 * multiscaleimage.cpp: render lower layer if the current layer
13282 contains NULL tiles.
13284 2009-02-02 Chris Toshok <toshok@ximian.com>
13286 * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
13287 correct apparent c&p error.
13289 2009-02-01 Larry Ewing <lewing@novell.com>
13291 * control.cpp, control.h:
13292 * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
13293 MeasureOverride here from control where they are only used for
13296 2009-02-01 Larry Ewing <lewing@novell.com>
13298 * thickness.cpp (Thickness::FromStr):
13299 * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
13300 that will cause the rest to be filled with 0. Fixes parsing of
13301 single value entries.
13303 * frameworkelement.cpp: arrange based on the adjusted rect.
13305 2009-02-01 Chris Toshok <toshok@ximian.com>
13307 * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
13308 the ApplyTemplate gunk here, as the template doesn't change when
13309 our content does - the ContentPresenter in our control template
13310 will changed based on our content.
13312 * xaml.cpp (dependency_object_set_attributes):
13313 handle_xaml_markup_extension has three possible return states.
13314 "Need SetValue", "Don't SetValue", and "Error". the bool return
13315 value is the first two (true == need_setvalue), and p->error_args
13316 determines the last one.
13317 (handle_xaml_markup_extension): add a comment detailing the
13318 need_setvalue return value, and make the return values consistent.
13319 TemplateBindings are weird in that they don't (for now) set a
13320 value, but require that we don't continue on with the set value
13321 machinery in dependency_object_set_attributes.
13323 Also, the TemplateBinding handling in the case of
13324 Property1={TemplateBinding Property2} was attaching things such
13325 that updates to source.Property1 would update target.Property2.
13326 This is exactly backward - it should have been source.Property2 =>
13327 target.Property1. We got lucky in a vast number of instances
13328 because the property names were the same.
13330 2009-02-01 Sebastien Pouliot <sebastien@ximian.com>
13332 * style.cpp: Revert first part (always seal) of last patch due to
13335 2009-02-01 Sebastien Pouliot <sebastien@ximian.com>
13337 * style.cpp: Always seal setters when added to collection (unit
13338 tested) and unrelated to style (which may not be assigned, SIGSEGV)
13340 2009-01-31 Geoff Norton <gnorton@novell.com>
13342 * animation.cpp: Its possible for a Storyboard to have TargetName
13343 and TargetProperty set, but be unresolvable, and still use a parent
13344 manual target (See Axelerate3D).
13346 2009-01-31 Chris Toshok <toshok@ximian.com>
13348 * collection.h, collection.cpp (class UIElementCollection):
13349 UIElements can be reparented logical parent-wise, but can't have
13350 more than one *visual* parent.
13352 2009-01-31 Larry Ewing <lewing@novell.com>
13356 * frameworkelement.cpp: rather than trying to fix the rendering
13357 fix the layout_xform to handle margins automatically.
13359 2009-01-31 Larry Ewing <lewing@novell.com>
13361 * border.cpp (Border::Render): try to match the interior
13362 CornerRound behavior a littler closer.
13364 2009-01-31 Larry Ewing <lewing@novell.com>
13366 * rect.cpp (Rect::Draw): fix typo in rect drawing.
13368 2009-01-31 Larry Ewing <lewing@novell.com>
13370 * cornerradius.h: add == and != overloads.
13372 * uielement.cpp: don't include the layout clip if we are
13373 tranforming the bounds. The layout clip only applies to local
13376 * border.cpp: restore the graphics context after clipping.
13378 2009-01-31 Larry Ewing <lewing@novell.com>
13380 * rect.cpp, rect.h: move the rounded drawing here for now until
13381 there is a better place.
13383 * border.cpp: start drawing the borderbrush and using border
13386 2009-01-31 Larry Ewing <lewing@novell.com>
13388 control.cpp: fix arranged size with border thickness or padding.
13390 border.cpp: fix arranged size with border thickness or
13391 padding. fix rendering with margins.
13393 panel.cpp: fix rendering with a margin.
13395 2009-01-31 Larry Ewing <lewing@novell.com>
13397 * border.cpp (Border::Render): add corner radius rendering logic
13400 2009-01-31 Stephane Delcroix <sdelcroix@novell.com>
13402 * multiscaleimage.h|cpp: ensure there's only one downloader running,
13403 fixes the issue where wrong images were cached.
13405 2009-01-31 Sebastien Pouliot <sebastien@ximian.com>
13407 * contentcontrol.h: Add @CallInitialize so the event gets
13408 registred (in the managed side) and we can now track content
13411 2009-01-30 Geoff Norton <gnorton@novell.com>
13413 * textbox.cpp: FontFamily is now a FontFamily not a string.
13415 2009-01-30 Chris Toshok <toshok@ximian.com>
13417 * xaml.cpp: fix ResourceDictionary once and for all.
13419 2009-01-30 Geoff Norton <gnorton@novell.com>
13421 * deployment.cpp|h: Ensure that any downloaders that might
13422 call back into managed land are aborted before we throw out the
13424 * downloader.cpp|h: Add a nice interface to DownloaderRequest
13425 and DownloaderResponse to save some code duplication in deployment
13427 2009-01-30 Geoff Norton <gnorton@novell.com>
13429 * mediaelement.cpp: If we finish downloading before we can
13430 fill the buffer, we still need to emit this event.
13432 2009-01-30 Chris Toshok <toshok@ximian.com>
13434 * usercontrol.h (class UserControl): make managed access to
13435 ContentProperty protected internal, not just protected.
13437 * dependencyobject.h (class DependencyObject): generate a
13438 cbinding/pinvoke for SetLogicalParent.
13440 * cbinding.h, cbinding.cpp: regen.
13442 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
13444 * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
13445 SelectionStart/Length.
13447 2009-01-30 Geoff Norton <gnorton@novell.com>
13449 * runtime.cpp: Let managed code change the fullscreen state.
13450 * cbinding.cpp|h: Regenerate
13452 2009-01-30 Chris Toshok <toshok@ximian.com>
13454 * xaml.cpp (dependency_object_set_property): remove the ugly
13455 assumption - we know if the property type is managed now.
13457 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
13459 * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
13460 state rather than returning a changed mask. Also modified to treat
13461 selection.start as the cursor position when selection.length is
13462 0. Otherwise refer to the cursor state to figure out which end of
13463 the selection the cursor is at (for growing/shrinking).
13464 (TextBox::KeyPressFreeze): Reset 'emit' state.
13465 (TextBox::KeyPressThaw): Sync and then emit our changed events.
13466 (TextBox::OnPropertyChanged): Updated for ClearSelection() API
13468 (TextBox::ClearSelection): Now takes a 'start' argument to set
13469 SelectionStart to (e.g. cursor position).
13470 (TextBox::Select): Now longer needs to do a freeze/thaw.
13471 (TextBoxView::OnKeyDown): Updated.
13473 2009-01-30 Chris Toshok <toshok@ximian.com>
13475 * control.h, control.cpp: same story with InsideObject.
13477 2009-01-30 Chris Toshok <toshok@ximian.com>
13479 * control.h, control.cpp: remove Control::Render. handling of the
13480 background property is left to a templatebinding in the visual
13481 tree of the applied template.
13483 2009-01-30 Chris Toshok <toshok@ximian.com>
13485 * provider.cpp (StylePropertyValueProvider::SealStyle): call
13486 ProviderValueChanged on all values in the style so the object can
13487 do things with them.
13489 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
13490 a comment about SealStyle calling ProviderValueChanged.
13492 2009-01-30 Chris Toshok <toshok@ximian.com>
13494 * xaml.cpp: when parsing multiple buffers (as we do when hydrating
13495 from a template), we need to keep track of the total offset from
13496 the start of all buffers, since XML_GetCurrentByteIndex returns a
13497 value with that range, it's not the byte index into the current
13498 buffer (unless there's only 1). Fixes templates stored inside of
13501 2009-01-30 Andreia Gaita <avidigal@novell.com>
13503 * clock.cpp: no use stopping if it's already stopped
13505 2009-01-30 Andreia Gaita <avidigal@novell.com>
13507 * clock.cpp: reset the state flags as well
13509 2009-01-30 Larry Ewing <lewing@novell.com>
13511 * text.cpp (TextBlock::Render): Start taking padding into account
13512 and limit the max size to actual not to the arranged value.
13514 2009-01-30 Jeffrey Stedfast <fejj@novell.com>
13516 * textbox.h (TextBox::GetCursor): Cursor position is aka
13519 * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
13520 (TextBox::Thaw): Decrement freeze count and emit events when we
13522 (TextBox::OnPropertyChanged): When SelectionStartProperty or
13523 SelectionLengthProperty change, call SyncSelectedText(). Fixed the
13524 selection.start/cursor positioning logic when TextProperty or
13525 SelectedTextProperty changes.
13526 (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
13529 2009-01-30 Larry Ewing <lewing@novell.com>
13531 * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
13534 2009-01-30 Sebastien Pouliot <sebastien@ximian.com>
13536 * frameworkelement.cpp: Make sure bounds_with_children is always
13537 initialized before being used.
13539 2009-01-30 Geoff Norton <gnorton@novell.com>
13541 * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
13542 media. Fixes the thumber moving on PDC player.
13544 2009-01-30 Jackson Harper <jackson@ximian.com>
13546 * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
13547 about them being legal if they are equal.
13549 2009-01-30 Larry Ewing <lewing@novell.com>
13551 * grid.cpp (Grid::ArrangeOverride): hack around spans in
13552 rebuilding the table until we understand them better.
13554 2009-01-30 Larry Ewing <lewing@novell.com>
13556 * frameworkelement.cpp:
13558 * control.cpp (Control::ArrangeOverride): use alignment properly
13559 in these places as well
13561 2009-01-30 Larry Ewing <lewing@novell.com>
13563 * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
13564 the alignment here.
13566 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
13568 * multiscaleimage.cpp: load png too
13570 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
13572 * multiscaleimage.cpp: change the vporigin to relative coords
13574 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13576 * dependencyobject.cpp: EventObject::unref: don't try to get the
13577 typename if there's no deployment around.
13579 * pipeline.cpp: Media::Shutdown: set the current deployment before
13580 looping over each media.
13582 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13584 * deployment.cpp: Remove dead code.
13586 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13588 * downloader.cpp: Downloader::Write: update current deployment.
13590 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13597 * mediaelement.cpp:
13598 * pipeline-asf.cpp:
13599 * mms-downloader.cpp:
13600 * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
13602 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13604 * deployment.cpp: Comment out log spammer.
13606 * runtime.cpp: Add some sanity checks.
13608 * dependencyobject.cpp: Set current deployment for delayed unrefs too.
13610 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
13612 * deepzoomimagetilesource.cpp: normalize ViewportWidth
13614 2009-01-30 Sebastien Pouliot <sebastien@ximian.com>
13616 * cbinding.cpp|h: Regenerated
13617 * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
13618 * rect.h: Add new ctor so the generator code can work
13620 2009-01-30 Stephane Delcroix <sdelcroix@novell.com>
13622 * tilesource.h|cpp:
13623 * deepzoomimagetilesource.h|cpp:
13624 * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
13625 implement the DZ parser in native code.
13627 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13629 * mediaplayer.cpp: MediaPlayer: Set object type correctly.
13631 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13633 * deployment.cpp: Allow setting the current deployment to NULL.
13635 2009-01-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
13637 * mediaelement.cpp: Handle MediaElementStateIndividualizing and
13638 AcquiringLicense in all switch statements to fix gcc warnings.
13640 2009-01-30 Geoff Norton <gnorton@novell.com>
13642 * debug.cpp: Use the proper headers here, we need them anyways.
13643 * window.h: Store the deployment we were created in.
13644 * window-gtk.cpp: Ensure we set our deployment before starting
13645 to call into our heirarchy.
13647 2009-01-30 Jb Evain <jbevain@novell.com>
13649 * deployment.h: make Deployment::Surface DP internal.
13651 2009-01-29 Geoff Norton <gnorton@novell.com>
13653 * deployment.h: Surface is now a DP on the deployment so we
13654 can share it with managed.
13655 * dependencyproperty.g.cpp: Regen
13656 * clock.cpp: Get the surface of the Deployment we're in so that
13657 clocks from Dispatcher timer end up on the right surface.
13659 2009-01-29 Geoff Norton <gnorton@novell.com>
13661 * deployment.cpp: Trust the domain over the TLS slot since mono
13662 will switch that on us on any thread really.
13664 2009-01-29 Geoff Norton <gnorton@novell.com>
13666 * clock.cpp|h: Ensure that we set the correct deployment from the
13667 clock ticks before traversing back into our heirarchy.
13669 2009-01-29 Jackson Harper <jackson@ximian.com>
13671 * xaml.cpp: Add support for the primitive types in mscorlib. This
13672 will get properly formed strings, doubles, and int32s working for
13673 now, we don't handle the oddities of the SL parsing properly yet
13676 2009-01-29 Jackson Harper <jackson@ximian.com>
13678 * type-generated.cpp: regen
13680 2009-01-29 Larry Ewing <lewing@novell.com>
13682 * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
13685 * grid.cpp: unref the dummy columns we create here.
13687 2009-01-29 Jeffrey Stedfast <fejj@novell.com>
13689 * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
13691 * textbox.h: Shuffle some internal accessors/events around.
13693 2009-01-29 Larry Ewing <lewing@novell.com>
13695 * text.cpp, text.h: implement basic layout size rules and strip
13696 the custom actual* properties. Still a hack but passable for now.
13700 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13703 * runtime.cpp: Surface: Implement Dispose and call Dispose on the
13704 toplevel object. PaintToDrawable: Update current deployment.
13706 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13708 * uielement.cpp: Dispose: add a null-check, and only walk the visual
13709 tree if we haven't been disposed already.
13711 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13714 * namescope.cpp: Namespace: Implement Dispose and remove all entries
13715 from our names hash table there.
13717 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13719 * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
13720 on upon destruction.
13722 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13724 * dependencyobject.h:
13725 * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
13726 Deployment::Current. Emit DestroyedEvent in Dispose instead of the
13729 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13732 * mediaelement.cpp: Implement Dispose and put most of the cleanup there
13733 instead of in the dtor. media_element_advance_frame: we need to set
13734 the current deployment here.
13736 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13738 * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
13739 pre-chain. Set array's size to 0 after deleting all the values.
13741 * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
13742 one media thread per Media object, there's no need to set the current
13743 deployment for each work node, just set it at thread start.
13744 MediaClosure::SetContext: fix refcounting bug.
13746 * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
13748 2009-01-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
13751 * deployment.cpp: Deployment: Enable support managed stackframes after
13752 initializing mono. Implement Dispose, and upon destruction set
13753 current application to NULL.
13755 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
13757 * tilesource.h|cpp: image size is long
13759 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
13761 * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
13763 2009-01-29 Stephane Delcroix <sdelcroix@novell.com>
13765 * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
13766 logical is [0,1],[0,1]
13768 2009-01-28 Larry Ewing <lewing@novell.com>
13770 * frameworkelement.cpp (FrameworkElement::MeasureOverride):
13771 it might help to actually measure things, so do that... *sigh*
13773 2009-01-28 Larry Ewing <lewing@novell.com>
13775 * shape.cpp (Shape::ComputeStretchBounds): remove the old
13776 width/height short circuiting when one or the other of
13777 width/height was not set simply use the lyaout clip when it is
13778 around. Might need a little more work but it is definitely
13781 2009-01-28 Larry Ewing <lewing@novell.com>
13783 * frameworkelement.cpp, frameworkelement.h: layout and arrange
13784 children if there are any. set IsLayoutContainer to true if we
13787 2009-01-28 Larry Ewing <lewing@novell.com>
13789 * frameworkelement.cpp (FrameworkElement::HitTest): move the
13790 majority of the hit test logic here. Now we only walk the
13791 children once and we only call InsideObject when we must.
13792 InsideObject now only checks the local object subtree is handled
13795 * panel.cpp, panel.h:
13796 * control.cpp, control.h:
13797 * border.cpp, border.h:
13798 * text.cpp, text.h: remove the old HitTest and rework InsideObject
13801 * uielement.cpp: make InsideClip potentially a little faster.
13803 2009-01-28 Larry Ewing <lewing@novell.com>
13805 * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
13810 * canvas.cpp: skip invisible elements.
13812 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
13814 * textbox.cpp (TextBoxView::Layout): We need to break the text
13815 apart by lines so that the TextLayout engine can handle them
13818 * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
13819 over to line->crlf for each LineBreak.
13820 (TextLayout::GetCursor): Need to keep track of the line-ending
13821 character sequences as well.
13823 * layout.h (TextRun::IsLineBreak): New method to check if the run
13824 represents a LineBreak, cleaner than manually checking for text ==
13826 (TextRun::ctor): LineBreak version now takes a crlf argument to
13827 specify which line ending sequence it is.
13829 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
13831 * textbox.cpp (move_down): Fixed to handle any line-ending.
13835 (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
13837 (TextBox::KeyPressDelete): Same.
13838 (TextBox::KeyPressHome): Same.
13839 (TextBox::KeyPressEnd): Same.
13840 (TextBox::KeyPressRight): Same.
13841 (TextBox::KeyPressLeft): Same.
13842 (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
13843 inserts a \r character, not a \n, nor a \r\n.
13845 * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
13847 (TextBlock::SetTextInternal): Canonicalize line endings in our
13850 * layout.cpp (TextRun::TextRun): Don't worry about line endings...
13852 2009-01-28 Jackson Harper <jackson@ximian.com>
13854 * xaml.cpp: Fix logic for setting name and key on
13855 storyboards. Rules are:
13856 1. You can set both if you set the name before the key
13857 2. You can set both if both values are equal
13859 2009-01-28 Chris Toshok <toshok@ximian.com>
13861 * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
13862 DependencyObjectCollection::AddedToCollection.
13863 (SetterBaseCollection::RemovedFromCollection): chain up to
13864 DependencyObjectCollection::RemovedFromCollection.
13866 2009-01-28 Sebastien Pouliot <sebastien@ximian.com>
13868 * dependencyproperty.g.cpp: Regenerated
13869 * enums.cpp|h: Add MediaElementState
13870 * playlist.cpp: Use new MediaElementState enum
13871 * mediaelement.cpp|h: Use new MediaElementState enum
13873 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13875 * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
13877 2009-01-27 Larry Ewing <lewing@novell.com>
13879 * grid.cpp: limit the reduction in size to zero.
13881 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13884 * dependencyobject.cpp: Fix building with object tracking.
13886 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13888 * debug.h: Surround logging macros with #if LOGGING instead of #if
13891 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13893 * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
13894 header, it's not used anywhere but in this file.
13896 * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
13897 configure time now.
13899 2009-01-28 Jeffrey Stedfast <fejj@novell.com>
13901 * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
13903 (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
13905 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13907 * uielement.h: Make Dispose public.
13909 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13911 * codec-version.h.in:
13912 * dependencyobject.h:
13913 * dependencyobject.cpp: EventObject: Make the flags field an gint32
13914 field (to keep size consistent), put the flags at the upper bits and
13915 use the remaining lower bits for the object id. This requires a codec
13918 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13920 * dependencyobject.cpp: Use bitfields correctly.
13922 2009-01-28 Sebastien Pouliot <sebastien@ximian.com>
13924 * text.cpp: FontFamily can be NULL so we can't just access its
13925 source field without a check. Fix SIGSEGV when running moon-unit.
13926 * value.cpp: FontFamily is not a (managed) struct so it can have
13927 a NULL value. Fix SIGSEGV when creating a Value out of a NULL
13928 FontFamily in moon-unit.
13930 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13933 * type-generated.cpp: Regenerated.
13935 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13941 * type-generated.cpp: Regenerated.
13943 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13949 * audio-pulse.cpp: Don't register any audio threads, they may interact
13950 badly with the gc and deadlock. Audio threads shouldn't be doing
13951 anything which requires the current deployment to be set anyway.
13953 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13956 * pipeline.cpp: AudioStream: call SetObjectType.
13958 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13960 * dependencyobject.h:
13961 * dependencyobject.cpp: Add an EventObject ctor overload which takes a
13962 Type::Kind. In EventObject::ref don't warn about inexistent
13963 deployments for audio objects.
13965 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13967 * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
13969 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13975 * audio-pulse.cpp: Every AudioSource already has deployment set (since
13976 they inherit from EventObject), use that to set the current
13979 2009-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
13981 * src.mdp: Updated.
13983 2009-01-27 Chris Toshok <toshok@ximian.com>
13985 * pipeline.cpp: include codec-version.h
13987 * pipeline-ui.cpp: same.
13989 * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
13992 * codec-version.h.in: new file. update the
13993 MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
13995 2009-01-27 Larry Ewing <lewing@novell.com>
13997 * mediaelement.cpp (MediaElement::MeasureOverride): correct
14000 2009-01-27 Larry Ewing <lewing@novell.com>
14002 * frameworkelement.cpp, frameworkelement.h: move generic
14003 bounds_with_children computation here for now. Make
14004 GetSubtreeBounds return bounds or bounds_with_children based on
14005 having children. Start setting the layout clip in arrange (it will
14006 probably move later). Rework the layout_xform logic slightly.
14008 * uielement.cpp: remove the generic render warning, it is ok not
14009 to override here if there is nothing local you need to draw. When
14010 intersecting bounds with the clip path take the layout clip into
14013 * text.cpp: update for bounds changes. Don't recompute the
14014 natural bounds every pass.
14016 * mediaelement.cpp, mediaelement.h:
14017 * media.cpp, media.h: rework arrange and measure to match shape.
14018 Remove overridden bounds logic since it is no longer needed. Only
14019 use the odd width/height setting logic when we aren're part of a
14020 layout tree. Use the layout clip when drawing.
14022 * shape.cpp: clean up the bounds logic. Use the layout clip when
14025 * control.cpp, control.h:
14026 * border.cpp, border.h: use the layout clip when rendering, remove
14027 overrides for bounds now that fe handles them.
14030 2009-01-27 Chris Toshok <toshok@ximian.com>
14032 * Makefile.am (libmoon_include_headers): add fontfamily.h
14034 * fontfamily.h: add struct.
14036 * control.h, text.h: FontFamilyProperty is of type FontFamily now.
14038 * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
14041 * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
14044 * value.h.in (struct Value): add FontFamily and guint32 cases.
14046 * xaml.cpp (value_from_str): add case for FONTFAMILY.
14048 * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
14050 2009-01-27 Geoff Norton <gnorton@novell.com>
14052 * audio-pulse.cpp|h: Use the Deployment sourced from the player
14053 * dependencyobject.cpp: Fix the warning to not use triple not
14055 * deployment.cpp: If we find the deployment from the domain,
14056 put it in the tls slot to make future lookups use the fast-path.
14058 2009-01-27 Jeffrey Stedfast <fejj@novell.com>
14060 * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
14061 events anymore. Instead of having a bool 'emit' flag, use
14062 something closer to gtk's freeze_count.
14063 (TextBox::OnKeyDown): Moved to TextBoxView.
14064 (TextBox::OnKeyUp): Same.
14065 (TextBox::SelectAll): Now returns bool to specify if the selection
14067 (TextBox::PreKeyPress): Freeze event emission for our state
14069 (TextBox::PostKeyPress): Thaw them and emit the events.
14070 (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
14071 textbox->PreKeyPress() and after processing, call
14072 textbox->PostKeyPress().
14074 2009-01-27 Jackson Harper <jackson@ximian.com>
14076 * value.cpp: unmarshall fonts properly.
14078 2009-01-27 Geoff Norton <gnorton@novell.com>
14080 * dependencyobject.cpp|h:
14081 * mediaplayer.cpp: Remove the stupidity from my last commit.
14082 * audio.cpp: We're in the right thread and Deployment here, use
14083 Deployment::GetCurrent().
14085 2009-01-27 Geoff Norton <gnorton@novell.com>
14087 * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
14088 the deployment on a EO.
14089 * deployment.cpp: Add some more logging.
14090 * mediaplayer.cpp: Inherit our Deployment from the MediaElement
14093 2009-01-27 Geoff Norton <gnorton@novell.com>
14096 * audio-pulse.cpp: Register the worker-thread's with mono and set our
14097 deployment correctly.
14098 * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
14099 around so that our audio-players can register the thread with mono.
14101 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14103 * pipeline.cpp: WorkerLoop: set the current deployment for every work
14107 * deployment.cpp: Add RegisterThread.
14109 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14111 * deployment.cpp: Deployment: Add some logging, fix indentation and call
14112 the DependencyObject ctor which takes a Deployment instead of the
14115 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14117 * dependencyobject.h:
14118 * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
14119 take a Deployment*, and an Initialize method which is called by both
14120 ctors of each type.
14122 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14124 * deployment.h: Initialize doesn't need cbinding/pinvoke.
14126 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14128 * debug.h: Add LOG_DEPLOYMENT.
14131 * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
14134 2009-01-27 Geoff Norton <gnorton@novell.com>
14136 * deployment.cpp|h: Lock our access to the hash. Remove a SetCurrent()
14137 instance since its just sugar and cant be bound anyways.
14139 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14141 * dependencyobject.h:
14142 * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
14144 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14146 * dependencyobject.h:
14147 * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
14149 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14151 * collection.cpp: Collection::Dispose: Call base class Dispose too.
14153 2009-01-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
14195 * contentcontrol.h:
14196 * multiscaleimage.h:
14197 * dependencyobject.h:
14198 * type-generated.cpp:
14199 * frameworkelement.h:
14200 * multiscalesubimage.h:
14201 * deepzoomimagetilesource.h: Include all types derived from EventObject
14202 in the type system and remove the IncludeInKinds annotations from
14205 2009-01-27 Chris Toshok <toshok@ximian.com>
14207 * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
14208 add the "XamlElementInstance* value" overload. part of axelerate
14210 (XamlElementInfoManaged::GetContentProperty): pass
14211 obj->AsDependencyObject() to GetContentPropertyName, instead of
14212 obj (which is a Value*).
14214 2009-01-26 Chris Toshok <toshok@ximian.com>
14216 * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
14217 some behavior with x:Key/x:Name only happens when the element is a
14218 child of a ResourceDictionary.
14220 2009-01-26 Larry Ewing <lewing@novell.com>
14222 * grid.cpp: rework proportional contribution of auto columns.
14224 * uielement.cpp: remove the slot logic from the transform here we
14225 will compute it in arrange.
14227 2009-01-26 Larry Ewing <lewing@novell.com>
14229 * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
14232 2009-01-26 Geoff Norton <gnorton@novell.com>
14234 * deployment.cpp: Cleanup our usage of hash a bit to avoid some
14235 senseless compare/branches.
14237 2009-01-26 Larry Ewing <lewing@novell.com>
14239 * shape.cpp (Shape::Clip): hack back in shape clipping until the
14240 layout clip logic fixed.
14242 2009-01-26 Geoff Norton <gnorton@novell.com>
14244 * deployment.cpp: Remove a useless null guard now that we have
14245 Deployment::Initialize. Don't rudely nuke the TLS slot we might not
14248 2009-01-26 Geoff Norton <gnorton@novell.com>
14250 * deployment.cpp|h: Deployment now does all the domain book keeping
14251 for us, so that calls to GetCurrent will return the Deployment for
14252 the appropriate context, it will also set the MonoDomain* appropriately
14255 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
14257 * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
14259 (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
14260 TextProperty from reentrancy.
14261 (TextBox::EmitSelectionChanged): Update the value before emitting
14262 the event, this way we don't need the dynamic provider.
14263 (TextBox::EmitTextChanged): Same.
14264 (TextBox::OnKeyDown): Handle key == GDK_Return.
14266 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
14268 * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
14269 to handle the TextProperty as well.
14270 (TextBox::TextBox): Init text_changed to false.
14271 (TextBox::EmitSelectionChanged): New helper method to set
14272 selection_changed to true and then emit the event.
14273 (TextBox::EmitTextChanged): Same idea.
14274 (TextBox::OnPropertyChanged): Use the new Emit helper methods.
14275 (TextBox::ClearSelection): Same.
14276 (TextBox::Select): Same.
14278 2009-01-26 Sebastien Pouliot <sebastien@ximian.com>
14280 * animation.h: Change validators for TargetNameProperty and
14282 * dependencyproperty.g.cpp: Regenerated
14283 * validators.cpp|h: Add new IsTimelineValidator that check that
14284 the instance is derived from Timeline.
14286 2009-01-26 Larry Ewing <lewing@novell.com>
14291 * control.cpp, control.h:
14292 * frameworkelement.cpp, frameworkelement.h:
14295 * src/mediaelement.cpp:
14297 * src/uielement.cpp:
14298 * src/usercontrol.h: Fix things to match the test results. Still
14299 a few regressions in shapes.
14301 2009-01-26 Larry Ewing <lewing@novell.com>
14303 * border.cpp (Border::MeasureOverride):
14305 2009-01-26 Larry Ewing <lewing@novell.com>
14307 * grid.cpp (Grid::MeasureOverride): handle out of bounds
14308 rows/columns the way the tests indicate.
14310 2009-01-24 Larry Ewing <lewing@novell.com>
14312 * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
14314 2009-01-24 Larry Ewing <lewing@novell.com>
14316 * uielement.h (class UIElement): add IsLayoutContainer () to test
14317 if a given element wants to do the layout dance. Hopefully this
14318 can be removed once the logic is more clear.
14323 * usercontrol.h: add IsLayoutContainer values.
14325 2009-01-26 Larry Ewing <lewing@novell.com>
14327 * frameworkelement.cpp: tests show some really crazy behavior in
14328 the short circuit case, try to emulate that.
14330 2009-01-26 Larry Ewing <lewing@novell.com>
14332 * frameworkelement.cpp (FrameworkElement::Measure): remove the
14335 * media.cpp: fix rendering.
14337 2009-01-26 Larry Ewing <lewing@novell.com>
14340 * border.cpp: Try to get alignment working visually.
14342 * frameworkelement.cpp: hack the needed behavior in until I
14343 understand the problem better.
14345 * mediaelement.cpp, mediaelement.h:
14346 * media.cpp: use the layout values in stretching
14348 2009-01-26 Larry Ewing <lewing@novell.com>
14350 * frameworkelement.cpp:
14353 * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
14356 2009-01-26 Larry Ewing <lewing@novell.com>
14359 * media.cpp: add bounds logic.
14364 * border.cpp: start trying to deal with
14367 * frameworkelement.cpp: compute the layout_xform.
14369 * uielement.cpp, uielement.h: add layout_xform and use it.
14371 * shape.cpp: try something else in measure.
14373 * size.h: add == and != overrides.
14375 2009-01-26 Jeffrey Stedfast <fejj@novell.com>
14377 * brush.cpp (VisualBrush::SetupBrush): Updated.
14379 * uielement.cpp (UIElement::Render): Render our subtree in the
14380 Region* version of this method and get rid of the old x,y,w,h
14383 * text.cpp (TextBlock::Render): Override the Render() that takes a
14385 (Glyphs::Render): Same.
14387 * textbox.cpp (TextBoxView::Render): Same.
14389 * shape.cpp (Shape::Render): Here too.
14391 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
14395 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
14397 * type.cpp: Revert r124497.
14399 2009-01-26 Sebastien Pouliot <sebastien@ximian.com>
14401 * transform.cpp: Add comment about a difference between SL2/ML
14402 in caching/computing the resulting matrix value (exposed in SL2)
14403 of a TransformGroup
14405 2009-01-26 Jackson Harper <jackson@ximian.com>
14407 * xaml.cpp: Move this check into a function since it will be used
14410 2009-01-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
14412 * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
14414 2009-01-26 Chris Toshok <toshok@ximian.com>
14416 * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
14417 binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
14418 canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
14419 contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
14420 dependencyobject.[cpp,h], dependencyproperty.h,
14421 deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
14422 eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
14423 geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
14424 mediaelement.[cpp,h], multiscaleimage.[cpp,h],
14425 multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
14426 popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
14427 size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
14428 text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
14429 trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
14430 usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
14431 files, and remove GetObjectType - call SetObjectType instead. Add
14432 @IncludeInKinds everywhere on types we want in the Kinds array -
14433 nothing is implicit now. Also, add @SkipValue on types that
14434 shouldn't automatically appear in the Value struct (As* method,
14437 * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
14438 but also call SetSubtreeObject at the right times (basically
14439 whenever our subtree object changes).
14441 * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
14442 too. also, rework the control template application step - don't
14443 cache the tree and duplicate it. just reparse. hook up template
14444 bindings properly as well. with this change buttons are starting
14447 * type.cpp: total_event_count = my_events +
14448 parent->total_event_count, so if my_events == 0...
14450 * xaml.cpp (start_element): reverse the subclass check.
14452 * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
14454 * Makefile.am: add expression.cpp, and there's no need for
14455 separate file lists anymore.
14457 2009-01-25 Chris Toshok <toshok@ximian.com>
14459 * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
14460 this registers a custom property. Fixes moon-unit failures.
14462 2009-01-25 Chris Toshok <toshok@ximian.com>
14464 * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
14467 2009-01-25 Chris Toshok <toshok@ximian.com>
14469 * xaml.cpp: mostly just remove the NULL's we were passing to the
14470 various DependencyObject methods that used to require an
14471 additional_types arg.
14472 (dependency_object_set_attributes): one important fix here - force
14473 the loader to do the SetValue if the type is URI, or if the type
14474 of the object itself is a custom type. Also, if we've converted
14475 the string to a valid value already, don't pass a string to the
14476 loader - this keeps us from passing "{Binding foo...}" to the
14477 loader to setvalue on a databound property. This does uncover a
14478 failing in our managed code, though, that there's no way to deal
14479 with the unmanaged BindingExpression from managed code.
14481 * application.cpp, application.h: instead of having a
14482 MonoDomain->Application mapping, we now have a
14483 MonoDomain->Deployment mapping, so Application::GetCurrent maps to
14484 Deployment::GetCurrent()->GetCurrentApplication().
14486 * deployment.cpp, deployment.h: flesh out Deployment, along with
14487 the MonoDomain->Deployment mapping. Also add a per-deployment
14488 Types* object, so we can look them up anywhere in the engine
14489 without having to rely on the managed layer passing
14492 * type.h.in, type.cpp: remove additional_types from all the apis.
14493 the currently registered custom types are always available from
14494 the Current deployment, which Type::Find uses. Also, add
14495 IsCustomType which lets us check if a type is one of our special
14496 built-in types, or if it's one that's been registered dynamically.
14498 * value.h.in, value.cpp: remove additional_types.
14500 * dependencyproperty.h, dependencyproperty.cpp: remove
14503 * dependencyobject.h, dependencyobject.cpp: remove
14506 * uielement.h: add cbindings/pinvokes for ElementAdded and
14509 * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
14512 * Makefile.am: remove contentpresenter.{h,cpp}
14514 * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
14517 2009-01-25 Sebastien Pouliot <sebastien@ximian.com>
14519 * cbinding.cpp|h: Regenerated
14520 * transform.cpp|h: Add GetMatrix (w/bindings).
14522 2009-01-23 Geoff Norton <gnorton@novell.com>
14524 * xaml.cpp: This is case-insensitive here too.
14526 2009-01-23 Geoff Norton <gnorton@novell.com>
14528 * dependencyobject.cpp: Avoid a SIGSEGV if the parent_scope is null.
14530 2009-01-23 Jeffrey Stedfast <fejj@novell.com>
14532 * utils.cpp (managed_stream_read_func): Fixed to do as intended.
14533 (managed_stream_write_func): Same.
14535 * textbox.cpp (next_word): Implemented.
14536 (prev_word): Implemented.
14538 2009-01-23 Andreia Gaita <avidigal@novell.com>
14540 * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
14541 list in case the dispatcher gets destroyed before they are processed.
14543 2009-01-23 Geoff Norton <gnorton@novell.com>
14545 * utils.cpp: Remove some g_error and handle ridiculously large
14546 zip files to appease glib.
14548 2009-01-23 Sebastien Pouliot <sebastien@ximian.com>
14550 * dependencyproperty.g.cpp: regenerated
14551 * brush.h: Set default values for RadialGradientTransform points
14553 2009-01-23 Stephane Delcroix <sdelcroix@novell.com>
14555 * multiscaleimage.cpp: add a bool so render knows if it was
14556 invalidated locally or not, and should keep rendering the upper
14557 layers or restart from the bottom.
14559 2009-01-23 Geoff Norton <gnorton@novell.com>
14561 * pipeline.h: Move ManagedStreamCallbacks to utils so other things
14563 * utils.cpp|h: Implement a minizip io-style wrapper around
14564 ManagedStreamCallbacks so that we can unzip from / to managed Stream's.
14566 2009-01-23 Stephane delcroix <sdelcroix@novell.com>
14568 * multiscaleimage.cpp: no longer crash on null uri
14570 2009-01-23 Sebastien Pouliot <sebastien@ximian.com>
14572 * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
14573 to be valid (xml-wise) but not a DO (e.g. a Color).
14575 2009-01-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
14577 * src.mdp: Added new files.
14579 2009-01-22 Chris Toshok <toshok@ximian.com>
14581 * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
14582 .cpp, and call SetDefaultStyleKey to get that working.
14584 2009-01-22 Chris Toshok <toshok@ximian.com>
14586 [ fixes to get http://www.life-silverlight.com/ to come up with
14589 * enums.cpp (initialize_enums): add a mapping for the property
14590 VerticaalContentAlignment using the vertical_alignment_map.
14592 * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
14593 file. Also, call SetSurface in SetVisualParent, so things like
14594 controls templates get the right surface assigned to them (they
14595 have no logical parent, only a visual one.)
14597 * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
14598 other template stuff - create a temp namescope here. it won't be
14599 merged, so nothing to worry about. Also, don't call
14600 PrepareContentPresenter here. do it after we look up text and
14601 root in OnApplyTemplate.
14602 (ContentPresenter::OnApplyTemplate): prepare the content
14605 2009-01-22 Jeffrey Stedfast <fejj@novell.com>
14607 * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
14609 (ContentPresenter::OnLoaded): Only unref the template if it isn't
14612 * contentpresenter.h (ContentPresenter::GetElementRoot):
14613 Implemented temporary binding hack.
14615 * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
14617 (ContentPresenter::OnPropertyChanged): Call
14618 PrepareContentPresenter() instead of ApplyTemplate().
14619 (ContentPresenter::OnApplyTemplate): Implemented.
14621 2009-01-22 Chris Toshok <toshok@ximian.com>
14623 * application.h, application.cpp: make surface a per-application
14624 thing, and add GetSurface/SetSurface.
14626 * cbinding.h, cbinding.cpp: regen.
14628 2009-01-22 Jeffrey Stedfast <fejj@novell.com>
14630 * contentcontrol.cpp (ContentControl::ContentControl): I'm
14631 guessing this needs to call SetDefaultStyleKey as well.
14633 * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
14634 because that causes problems (the TextBox already has a logical
14635 parent). Instead, we'll just keep track of it internally
14637 (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
14638 when the TextBox property changed.
14640 * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
14641 the default style key.
14642 (ContentPresenter::OnLoaded): Load the default template.
14644 * contentpresenter.cpp|h: New source files. Subclass Control even
14645 though in managed-land, we technically subclass
14646 FrameworkElement. This way we can take advantage of Control's
14649 2009-01-22 Chris Toshok <toshok@ximian.com>
14651 * xaml.cpp (dependency_object_set_attributes): commit jackson's
14652 patch (with one slight modification) so everyone can have the
14653 wonderful world of non-broken setters.
14655 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
14657 * dependencyobject.h:
14658 * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
14659 around object counters (we define DEBUG always anyways, and the
14660 counters are always useful).
14662 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
14664 * dependencyobject.cpp: Protect objects_alive with a mutex.
14666 2009-01-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
14668 * dependencyobject.h:
14669 * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
14672 2009-01-22 Stephane delcroix <sdelcroix@novell.com>
14675 * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
14676 first time it's needed.
14678 2009-01-21 Geoff Norton <gnorton@novell.com>
14680 * application.cpp: If we're set to NULL remove the application
14681 from the hash table.
14683 2009-01-21 Geoff Norton <gnorton@novell.com>
14685 * Makefile.am: Add bitmapimage.cpp to the build
14686 * application.cpp|h: Add a new callback into Application to
14687 return a resource stream.
14688 * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
14689 a managed resource stream and make this all native.
14690 * brush.cpp|h: Brush.ImageSource is now a BitmapImage
14691 * media.cpp|h: Image.Source is now a BitmapImage
14692 * xaml.cpp: BitmapImage can be constructed from a string in xaml
14694 * dependencyproperty.g.cpp: Regenerate
14696 2009-01-21 Larry Ewing <lewing@novell.com>
14698 * grid.cpp (Grid::MeasureOverride): rework the incremental
14699 contribution logic.
14701 2009-01-21 Jeffrey Stedfast <fejj@novell.com>
14703 * contentcontrol.cpp (ContentControl::OnPropertyChanged):
14704 Implemented by calling ApplyTemplate() when ContentTemplate or
14705 Content properties change.
14706 (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
14707 when the content changes.
14709 2009-01-21 Larry Ewing <lewing@novell.com>
14711 * grid.cpp: store measurement info in the row and column
14712 definitions and don't allocate the arrays.
14714 2009-01-21 Larry Ewing <lewing@novell.com>
14716 * grid.cpp, grid.h: Hack things to handle missing row
14717 definitions and clean up some old errors.
14719 2009-01-21 Jeffrey Stedfast <fejj@novell.com>
14721 * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
14722 rather than SetContent() since SetContent() has been removed.
14723 * contentcontrol.h (class ContentControl): Updated a bit, we're
14724 going to actually use this unmanaged class now.
14725 (class ContentControl): Set PropertyType for ContentProperty to
14726 'object' and get rid of the generated accessors.
14728 2009-01-21 Jackson Harper <jackson@ximian.com>
14730 * dependencyobject.cpp|h: When setting values, unmarshal values
14732 * value.h|cpp: Add unmarshal function so we can convert types
14733 coming from managed.
14736 * type-generated.cpp: Regenerated.
14738 2009-01-21 Sebastien Pouliot <sebastien@ximian.com>
14740 * dependencyproperty.g.cpp: Regenerated
14741 * text.cpp|h: Revert earlier change as it "turns black" too many
14742 things. DRT #47 will fail until I find the right fix :(
14744 2009-01-21 Larry Ewing <lewing@novell.com>
14746 * grid.cpp (Grid::ArrangeOverride): make the basic cases work
14749 2009-01-21 Alan McGovern <amcgovern@novell.com>
14751 * popup.cpp: Remove debug code from svn.
14753 2009-01-21 Alan McGovern <amcgovern@novell.com>
14760 * type-generated.cpp: Initial attempt at trying to get Popup.Child
14763 2009-01-21 Sebastien Pouliot <sebastien@ximian.com>
14765 * dependencyproperty.g.cpp: Regenerated
14766 * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
14767 ctor initialized value. This means that GetLocalValue won't return
14768 null for this property, which makes it behave correctly for SL1/JS
14770 [Fix DRT#47 failing since r123884]
14772 2009-01-20 Chris Toshok <toshok@ximian.com>
14774 * application.h, application.cpp: switch from using a static
14775 Application* for "Current" to a hashtable mapping MonoDomain* to
14778 2009-01-20 Jackson Harper <jackson@ximian.com>
14780 * xaml.cpp: Lookup resources in Application.Resources if we don't
14781 find the resource in the tree.
14783 2009-01-20 Chris Toshok <toshok@ximian.com>
14785 * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
14786 cbinding.cpp: regen.
14788 * Makefile.am (libmoon_include_headers): add application.h
14789 (libmoon_la_SOURCES): add application.cpp
14791 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14792 if the style was set, call Application::ApplyStyle -- doesn't
14793 actually *apply* the style, it just converts the values.
14795 * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
14796 the ConvertedValueProperty after the setter is sealed.
14798 * style.h (class Setter): add ConvertedValueProperty.
14800 * textbox.h (class TextBox): remove @CallInitialize.
14802 * textbox.cpp (TextBox::TextBox): i hate the way this is
14803 expressed (we need a ManagedTypeInfo ctor/dtor), but set
14804 DefaultStyleKey here instead of in managed land.
14806 * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
14807 return the converted property value, not the original (which may
14808 have been a string.)
14809 (StylePropertyValueProvider::SealStyle): only put setters in the
14810 hash if their converted value is non-null.
14812 * control.h (class Control): generate accessors for
14815 * control.cpp (Control::OnLoaded): do the default style
14817 (Control::ApplyTemplate): output a little spew so we
14818 can tell if we're applying a template.
14820 * application.h, application.cpp: move Application here, and make
14821 it a full DO subclass. It no longer maps to the managed
14822 ApplicationInternal.
14824 * deployment.h: remove Application from here.
14826 2009-01-20 Jackson Harper <jackson@ximian.com>
14828 * xaml.cpp: When we create templates make sure we track the
14829 template ourself, we can't rely on the ControlTemplate still
14830 having a surface when it is applied.
14832 2009-01-20 Jeffrey Stedfast <fejj@novell.com>
14834 * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
14835 (Keyboard::OnKeyRelease): Same.
14837 2009-01-20 Jackson Harper <jackson@ximian.com>
14839 * clock.h: Set namespace for Duration and RepeatBehavior
14841 2009-01-20 Sebastien Pouliot <sebastien@ximian.com>
14843 * dependencyproperty.g.cpp: Regenerated
14844 * uielement.h: Re-apply default value for RenderTransformProperty
14846 2009-01-19 Larry Ewing <lewing@novell.com>
14850 * window-gtk.cpp, window-gtk.h: clean up the set background
14851 clearing logic and make it general.
14853 2009-01-19 Larry Ewing <lewing@novell.com>
14855 * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
14856 window to white by default.
14858 2009-01-19 Larry Ewing <lewing@novell.com>
14860 * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
14861 implementing arrangeoverride.
14863 2009-01-19 Larry Ewing <lewing@novell.com>
14865 * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
14866 screen message too.
14868 2009-01-19 Jackson Harper <jackson@ximian.com>
14871 * binding.h: Get kinds generated for these guys.
14873 * type-generated.cpp: updated
14875 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
14879 2009-01-19 Jackson Harper <jackson@ximian.com>
14881 * grid.h: GridLength lives in System.Windows.
14883 2009-01-19 Jackson Harper <jackson@ximian.com>
14885 * color.h: Colours are in System.Windows.Media.
14887 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
14889 * pipeline.h: Instead of overriding GetTypeName for media clases
14890 override GetObjectType so that the generator puts these classes into
14891 our type system. This will fix a lot of the "event not registered"
14896 * type-generated.cpp: Regenerated.
14898 2009-01-19 Alan McGovern <amcgovern@novell.com>
14907 * type-generated.cpp:
14908 * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
14910 2009-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
14912 * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
14913 Add support for 'unsigned X' types (used in src/asf/).
14915 2009-01-18 Geoff Norton <gnorton@novell.com>
14917 * xaml.cpp: Only unref the surface if it exists.
14919 2009-01-18 Geoff Norton <gnorton@novell.com>
14921 * dependencyobject.cpp: Ensure that the parent scope registration
14922 behavior is only applied to UserControl's.
14924 2009-01-18 Geoff Norton <gnorton@novell.com>
14926 * xaml.cpp: Only ref the surface if it exists.
14928 2009-01-18 Larry Ewing <lewing@novell.com>
14930 * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
14932 * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
14933 arrange method for now.
14935 2009-01-18 Larry Ewing <lewing@novell.com>
14937 * control.cpp: update invaliate/measure to look more like border
14938 (still wrong) and remove some debug spew.
14940 2009-01-18 Sebastien Pouliot <sebastien@ximian.com>
14942 * cbinding.h|cpp, type.h, value.h: Regenerated
14943 * transform.h: Add UnmanagedMatrix (which is a DO accessible to
14944 managed code) and a new method to get the address of the matrix
14946 * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
14948 2009-01-17 Larry Ewing <lewing@novell.com>
14950 * canvas.cpp (Canvas::MeasureOverride):
14951 * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
14953 2009-01-17 Jackson Harper <jackson@ximian.com>
14955 * xaml.cpp: Dont create items for property elements. The element
14956 name for property elements can be an abstract type.
14958 2009-01-17 Jackson Harper <jackson@ximian.com>
14960 * xaml.cpp: Don't try to set properties that are collections,
14961 they've already had the items added in add_child.
14963 2009-01-17 Jackson Harper <jackson@ximian.com>
14965 * xaml.cpp|h: Change CreateObject to LookupObject and give it a
14966 flag for actually creating the object. This allows us to verify
14967 the type on hydrated elements without creating another instance
14968 and prevents a circular dependency when elements load themself in
14969 their LoadComponent xaml.
14971 2009-01-17 Geoff Norton <gnorton@novell.com>
14973 * dependencyobject.cpp: A custom UserControl has a local namescope
14974 but also needs to be locatable in its parent namescope.
14976 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
14978 * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
14979 different font size (not that TextBox really needs that since all
14980 runs will be the same exact font).
14982 * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
14983 to update the cursor rect.
14984 (TextBoxView::Layout): Update the cursor after we finish laying
14986 (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
14987 (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
14990 2009-01-16 Jackson Harper <jackson@ximian.com>
14992 * xaml.cpp: NULL is OK if it's being explicitly set.
14994 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
14996 * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
14997 cursor region and the new cursor region.
14998 (TextBoxView::Paint): Paint the cursor as well.
15000 * layout.cpp (Layout::GetCursor): Implemented.
15002 2009-01-16 Larry Ewing <lewing@novell.com>
15004 * frameworkelement.cpp (FrameworkElement::MeasureOverride):
15007 * panel.cpp, panel.h: remove arrange override and make measure
15008 override return (0,0) always.
15010 2009-01-16 Larry Ewing <lewing@novell.com>
15012 * panel.cpp: Make ArrangeOverride and MeasureOverride do something
15013 closer to the right thing.
15015 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
15017 * textbox.cpp (TextBox::ArrangeOverride): Removed.
15018 (TextBox::Background) needs to return NULL if not selected mode -
15019 we don't want to be redrawing the normal bg.
15021 2009-01-16 Geoff Norton <gnorton@novell.com>
15023 * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
15024 we're going to keep it alive to apply control templates.
15026 2009-01-16 Geoff Norton <gnorton@novell.com>
15028 * template.cpp: Add the namescope to the closure to avoid
15029 referencing random memory.
15030 * xaml.cpp: We create a new XamlLoader when applying control
15031 templates, and inherit the callbacks. Set vm_loaded to true in
15034 2009-01-16 Jeffrey Stedfast <fejj@novell.com>
15036 * textbox.cpp (TextBox::TextBox): Don't init the selection
15037 brushes, they must come from the style.
15039 2009-01-16 Larry Ewing <lewing@novell.com>
15041 * border.cpp, border.h:
15042 * uielement.cpp, uielement.h:
15043 * panel.cpp, panel.h:
15044 * canvas.cpp, canvas.h:
15045 * control.cpp, control.h: Remove GetTransformFor completely, use
15046 the layout slot x/y when computing the local transform,
15047 invalidatemeasure (for now) when updating the tranform.
15049 * dirty.cpp: hack in the intial Left/Top stuff until we can clean
15052 2009-01-16 Larry Ewing <lewing@novell.com>
15054 * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
15055 unless stretch is specified.
15057 2009-01-16 Geoff Norton <gnorton@novell.com>
15059 * mediaelement.h: The MediaElement.Source is a Uri on the managed
15062 2009-01-16 Jackson Harper <jackson@ximian.com>
15064 * xaml.cpp: FindTypeName type names dont' always have a
15065 namespace/assembly.
15066 - Special case Application and don't try to find it's name since
15067 it is renamed in the managed code. (Need to figure out a better
15069 - Pass in NULL for setting propertys and let the underlying types
15070 determine whether or not that is an error.
15072 2009-01-16 Jackson Harper <jackson@ximian.com>
15074 * xaml.cpp: Before going to managed to create an element, scan the
15075 xnamespace for the x:Class attribute and pass that in as the
15076 element name if we have one, this allows you to use abstract names
15077 for the elements as long as the x:Class is a complete type. Should
15078 also allow us to optimize out a trip into managed.
15080 2009-01-16 Jackson Harper <jackson@ximian.com>
15082 * xaml.cpp: The xaml context needs to store the callbacks so that
15083 we can properly invoke managed code in a template.
15085 2009-01-16 Jackson Harper <jackson@ximian.com>
15087 * dependencyproperty.cpp: This warning isn't really needed and now
15088 with managed DP lookup's, this scenario happens about a trillion
15089 times during parsing of generic.xaml.
15091 2009-01-16 Larry Ewing <lewing@novell.com>
15093 * uielement.h (class UIElement): remove the default value from
15094 RenderTransformProperty until the bugs it introduces are resolved.
15096 * dependencyproperty.g.cpp:Regenerated.
15098 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
15100 * dependencyproperty.g.cpp: Regenerated
15101 * grid.h: Add default values for [Column|Row]Definition Width
15103 * xaml.cpp: Fix most cases (except empty) of GridLength
15105 2009-01-15 Geoff Norton <gnorton@novell.com>
15107 * downloader.cpp|h: Add downloader_response_abort.
15109 2009-01-15 Jackson Harper <jackson@ximian.com>
15111 * xaml.cpp|h: We need to pass a pointer to the elements parent
15112 object to managed code, this is so we can look up a Setter's
15114 - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
15116 2009-01-15 Jackson Harper <jackson@ximian.com>
15118 * dependencyproperty.cpp: Patch mostly by rolf. Allows property
15119 lookup to work on custom types that subclass custom types.
15120 * template.cpp: Now that templates work pretty well, lets reduce
15123 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
15125 * dependencyproperty.g.cpp: Regenerated to include the specified
15126 type (and not the implied one from the default value)
15127 * uielement.h: RenderTransformProperty defaults to a empty (identity)
15130 2009-01-15 Jeffrey Stedfast <fejj@novell.com>
15132 * textbox.cpp: Removed default_*[fore,back]ground() functions as
15133 well as textbox_shutdown() since they are no longer needed.
15134 (TextBox::TextBox): Initialize the default SelectionBackground and
15135 SelectionForeground brushes.
15137 * layout.h (struct TextSelection): Removed brushes from
15138 TextSelection struct.
15140 2009-01-15 Jeffrey Stedfast <fejj@novell.com>
15142 * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
15143 Cannot compare a guint64 with -1, presuming the comparison was
15144 meant to be against TimeSpan_FromPTS (position) instead.
15146 * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
15147 instead of SelectionChangedEventArgs.
15149 * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
15150 ctor that takes a source.
15152 * textbox.h (class SelectionChangedEventArgs): Removed, this type
15153 of EventArgs is not actually emitted by TextBox as I had
15154 originally thought. TextBox's SelectionChanged event uses
15157 2009-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
15159 * type-generated.cpp:
15160 * dependencyproperty.g.cpp: Regenerated.
15163 * mediaelement.cpp: Inherit directly from FrameworkElement instead of
15164 MediaBase. This requires copying some code from MediaBase into
15165 MediaElement (which at some later stage would move into Media).
15167 2009-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
15170 * cbinding.cpp: Regenerated.
15175 * type-generated.cpp:
15176 * dependencyproperty.h:
15177 * dependencyproperty.cpp: Add support for looking up custom dependency
15178 properties by name.
15180 2009-01-15 Sebastien Pouliot <sebastien@ximian.com>
15182 * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
15183 Add comment on value_from_str_with_typename to update NativeMethods.cs
15185 2009-01-15 Larry Ewing <lewing@novell.com>
15190 * frameworkelement.cpp: start taking layout slot into account when
15193 2009-01-15 Jackson Harper <jackson@ximian.com>
15195 * xaml.cpp: Storyboard are allowed to have an x:Name and an
15196 x:Key. This is for backwards compatibility because SL1 didn't have
15197 x:Key. It's also stupid.
15199 2009-01-15 Jackson Harper <jackson@ximian.com>
15201 * xaml.cpp: Add a fake element to templates with all the imported
15202 namespaces. This allows all the namespaces imported in the main
15203 source to work in the template.
15205 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
15207 * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
15209 (TextBoxView::Layout): Build the text runs based on the selection.
15210 (TextBoxView::Paint): Updated to no longer pass the selection
15211 state to the layout engine.
15213 * layout.h (class ITextSource): Added a Background() accessor and
15214 changed the Foreground() accessor to take a bool selected
15217 * layout.cpp (RenderSegment): Render the background if non-NULL.
15218 (TextRun::TextRun): Now takes a 'selected' state.
15219 (TextLayout::Render): No longer takes selection or cursor
15222 2009-01-14 Jackson Harper <jackson@ximian.com>
15224 * xaml.cpp: Fix x:Null handling.
15226 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
15228 * brush.h: Add default values used by some brushes
15229 * dependencyproperty.g.cpp: Regenerated
15231 2009-01-14 Larry Ewing <lewing@novell.com>
15233 * panel.cpp (Panel::GetTransformFor): override gettransformfor for
15236 2009-01-14 Jackson Harper <jackson@ximian.com>
15238 * xaml.cpp: Add the namespaces to the xaml context.
15240 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
15242 * textbox.cpp (TextBox::CursorBackSpace): Implemented.
15243 (TextBox::CursorDelete): Implemented.
15245 * layout.cpp (RenderSegment): Split out from RenderLine().
15247 2009-01-14 Jackson Harper <jackson@ximian.com>
15249 * xaml.cpp: Apparently there is a new NULL on the block. Use
15250 SetIsNull instead of a NULL Value* now.
15252 2009-01-14 Jackson Harper <jackson@ximian.com>
15254 * template.cpp: initialize xaml_context. (fixes shutdown crash)
15256 2009-01-14 Jackson Harper <jackson@ximian.com>
15258 * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
15259 these before my last patch.
15261 2009-01-14 Jackson Harper <jackson@ximian.com>
15263 * xaml.cpp: Styles use their TargetType as their
15264 ResourceDictionary key.
15265 - Handle the new type MANAGEDTYPEINFO by allowing the managed code
15267 * value.cpp|h|.h.in:
15268 * type.h|h.in: New type, ManagedTypeInfo. Contains info for
15269 loading managed types.
15272 * template.h: Use ManagedTypeInfo when we have a System.Type on
15274 * dependencyproperty.g.cpp:
15275 * typegenerated.cpp: Regen
15277 2009-01-14 Jeffrey Stedfast <fejj@novell.com>
15279 * textbox.cpp: More fixes for cursor movement & keyboard selection.
15281 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
15283 * grid.cpp (MeasureOverride): Free allocated arrays
15285 2009-01-14 Sebastien Pouliot <sebastien@ximian.com>
15287 * grid.cpp: Add a bunch of NULL checks for width and height to avoid
15288 crashes when running the SDK controls unit tests.
15290 2009-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
15292 * dependencyobject.cpp: Fix
15293 media/video/test-reset-media-element-source.html.
15295 2009-01-14 Alan McGovern <amcgovern@novell.com>
15297 * enums.cpp: Control.HorizontalContentAlignment should map to the
15298 HorizontalAlignment enum.
15300 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
15302 * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
15305 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
15307 * deepzoomtilesource.h: mark it with CallInitialize
15309 2009-01-14 Stephane Delcroix <sdelcroix@novell.com>
15311 * tilesource.h|cpp: autogenerate the cbinding
15313 * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
15314 managed side for xml parsing.
15316 2009-01-13 Chris Toshok <toshok@ximian.com>
15318 * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
15320 (XamlLoader::CreateFromStringWithError): same.
15321 (XamlLoader::HydrateFromStringWithError): same.
15322 (~XamlLoader): unref the error_args.
15323 (XamlLoader::HydrateFromString): no need to ref the object again
15324 here if it was passed in.
15326 2009-01-13 Larry Ewing <lewing@novell.com>
15328 * uielement.cpp, uielement.h (class LayoutInformation): add
15329 LayoutInformation class to hold the layout related attached
15330 properties. (will move it later).
15332 * frameworkelement.cpp: use the new layout information and use it
15335 * border.cpp: fix the arrange logic.
15337 2009-01-13 Larry Ewing <lewing@novell.com>
15339 * shape.cpp: switch over to using the computed values for stretch.
15341 * frameworkelement.cpp:
15343 * dirty.cpp, dirty.h: Try to get invalidation logic close to
15346 2009-01-13 Larry Ewing <lewing@novell.com>
15348 * shape.cpp: treat rect and ellipse like normal framework elements.
15350 2009-01-13 Larry Ewing <lewing@novell.com>
15352 * frameworkelement.cpp:
15356 * mediaelement.cpp:
15357 * panel.cpp: Use the layout values for values we used to compute
15360 2009-01-13 Larry Ewing <lewing@novell.com>
15362 * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
15363 collection while iterating.
15365 2009-01-13 Larry Ewing <lewing@novell.com>
15368 * src/frameworkelement.cpp
15370 * src/panel.cpp, src/panel.h: layout updates
15372 2009-01-13 Larry Ewing <lewing@novell.com>
15374 * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
15377 * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
15379 2009-01-13 Larry Ewing <lewing@novell.com>
15381 * shape.cpp, shape.h: start moving cleaning up references to width
15382 and height and moving towards using the layout logic. Remove
15383 stale LargestRect stuff
15385 * runtime.c, dirty.h: stub in an update layout function.
15387 * border.cpp, canvas.cpp: try to match some more tests.
15389 2009-01-13 Jeffrey Stedfast <fejj@novell.com>
15391 * textbox.cpp (TextBox::CursorPageDown): Implemented.
15392 (TextBox::CursorPageUp): Implemented.
15393 (TextBox::CursorHome): Implemented.
15394 (TextBox::CursorEnd): Implemented.
15395 (TextBox::CursorDown): Implemented.
15396 (TextBox::CursorUp): Implemented.
15397 (TextBox::OnKeyDown): Implemented Select-All keybinding and
15398 stubbed out cut/copy/paste.
15400 2009-01-13 Sebastien Pouliot <sebastien@ximian.com>
15402 * dependencyproperty.g.cpp: Regenerated
15403 * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and
15404 Shape.StrokeDashArray and set them in the constructors (which is
15405 bit ifferent and fix Polyhedra animation).
15407 2009-01-13 Sebastien Pouliot <sebastien@ximian.com>
15409 * dependencyproperty.g.cpp: Regenerated
15410 * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
15411 StrokeDashArray since they are not NULL in SL2
15413 2009-01-13 Alan McGovern <amcgovern@novell.com>
15415 * src.mdp: Add the provider stuff to the MD solution
15417 2009-01-13 Chris Toshok <toshok@ximian.com>
15419 * provider.cpp (StylePropertyValueProvider::SealStyle): only
15420 insert the setter into the hash if the setter's value matches the
15421 type of the setter's property. Fixes
15422 StyleTest.InvalidValueProgrammatically.
15424 2009-01-13 Jackson Harper <jackson@ximian.com>
15426 * xaml.cpp|h: Add the ability to lookup full uri's based on local
15427 prefixes. This is so managed can convert something like
15428 'local:' into 'clr-namespace=Foo;assembly=bar'
15430 2009-01-13 Jackson Harper <jackson@ximian.com>
15432 * xaml.cpp|h: Pass the ParserInfo to every callback, this will
15433 allow us to call back into unmanaged to do extra stuff.
15435 2009-01-13 Stephane Delcroix <sdelcroix@novell.com>
15437 * tilesource.h|cpp: add a callback and a method to set the callback
15438 so we can poke the managed GetTileLayers.
15440 2009-01-12 Chris Toshok <toshok@ximian.com>
15442 * style.cpp, style.h (Style::GetPropertyValue): remove this. it's
15443 been replaced by the hash lookup in the style provider.
15445 * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
15446 change... apparently there's something that happens to lower
15447 precedence providers after you call ClearValue, but *only if the
15448 local value was actually cleared*. yuck.
15450 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
15451 remove the Style sealing from SetValueWithErrorImpl, and move it
15452 here where it should have been all along. Also, do the sealing
15453 via the Style value provider, so it can make things a bit more
15456 * provider.cpp (StylePropertyValueProvider::SealStyle): new
15457 method, called by FWE::OnPropertyChanged when the style is
15458 initially set. we cache the setters (keyed by DP) in a hashtable.
15459 (StylePropertyValueProvider::RecomputePropertyValue): this is the
15460 magic method that DependencyObject::ClearValue calls, which causes
15461 the style provider to refresh its cache for the listed property.
15463 2009-01-12 Jackson Harper <jackson@ximian.com>
15465 * xaml.cpp: Fix typo, makes ControlTemplates inside of
15466 ControlTemplates work properly.
15468 2009-01-12 Jackson Harper <jackson@ximian.com>
15470 * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
15471 we can load some sites and see which properties are missing, right
15472 now it will only work for attributes. Intentionally not using the
15473 debug flags stuff, because i don't want this hack to stay around
15476 2009-01-12 Jackson Harper <jackson@ximian.com>
15478 * xaml.cpp: Stop trying to set attributes once we hit the first
15481 2009-01-12 Jeffrey Stedfast <fejj@novell.com>
15483 * collection.cpp (InlineCollection::Equals): New convenience
15484 method to replace text.cpp's inlines_simple_text_equal().
15486 * textbox.h (class TextBox): Now implements ITextSource.
15488 * text.cpp (Inline::UpdateFontDescription): New convenience method
15489 to populate the cached TextFontDescription since we can no longer
15490 rely on doing so from within OnPropertyChanged().
15491 (Inline::Equals): Base comparison method used by
15492 InlineCollection::Equals().
15493 (Run::Equals): Compare the Text property as well.
15494 (TextBlock::Layout): Call UpdateFontDescription() on each Inline
15495 as we iterate through them. Also updated for TextRun ctors.
15496 (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
15497 premise is that we do not want to force a layout calculation to be
15498 redone, we just need to invalidate if all that changed was a
15500 (inlines_simple_text_equal): Removed, use
15501 InlineCollection::Equals() instead.
15502 (TextBlock::SetTextInternal): Updated to use
15503 InlineCollection::Equals().
15505 * text.h (class Inline): Now implements the ITextSource
15506 interface. Moved the local TextFontDescription and autogen state
15507 into the private section and added accessors for them.
15509 * layout.cpp|h (class ITextSource): New interface sued by TextRuns
15510 and the internal Layout logic to grab a run's foreground brush and
15512 (TextRun::ctor): No longer take TextDecoration,
15513 TextFontDescription, or Brush arguments, instead takes an
15514 ITextSource that it can query for those properties when it needs
15516 (RenderLine): Updated to get the decorations and foreground brush
15517 from the ITextSource.
15519 2009-01-12 Alan McGovern <amcgovern@novell.com>
15524 * dependencyproperty.g.cpp: Add range validation to TimeSpan
15526 2009-01-12 Jackson Harper <jackson@ximian.com>
15528 * xaml.cpp: Moved nameditem lookup into the parser info so we can
15529 use the parser context data to lookup resources. This allows
15530 templates to reference StaticResources.
15532 2009-01-12 Alan McGovern <amcgovern@novell.com>
15534 * clock.cpp: Minimum FPS is clamped at 1.
15536 2009-01-12 Jackson Harper <jackson@ximian.com>
15538 * xaml.cpp|h: Create a xaml context object so we can save some
15539 state information for buffered templates.
15540 * template.h|cpp: Updated xaml methods.
15542 2009-01-12 Alan McGovern <amcgovern@novell.com>
15547 * dependencyproperty.g.cpp: Add correct validator for
15548 Storyboard.TargetName and Storyboard.TargetProperty
15550 2009-01-12 Sebastien Pouliot <sebastien@ximian.com>
15552 * grid.h: Hide RowDefinitionCollection ctor from managed code
15553 * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
15554 returns true the Style value can still be NULL (fix two new crash
15555 in SDK control unit tests)
15557 2009-01-12 Andreia Gaita <avidigal@novell.com>
15559 * stackpanel.cpp|h: removed, stackpanel is now done in managed
15562 * cbinding.cpp|h, dependencyproperty.g.cpp,
15563 type-generated.cpp, type.h,
15566 * Makefile.am, src.mdp: update build
15568 2009-01-11 Chris Toshok <toshok@ximian.com>
15570 * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
15571 now. the run fg will always be initialized.
15572 (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
15573 (TextLayout::Render): no need to pass in the default foreground.
15575 * runtime.cpp (runtime_shutdown): text_shutdown is gone.
15577 * text.h, text.cpp: stop caching the foreground. and there's no
15578 need to create the default foreground brush in code. it's simply
15579 the default value of the Foreground dependency property.
15580 (inlines_simple_text_equal): this needed fixing up since the font
15581 flags really aren't used for inheritance anymore - we need (and
15582 really, always needed to) compare the actual values, not just if
15584 (text_shutdown): no need for this anymore.
15586 * textbox.cpp (TextBoxView::Paint): same. no more default_fg
15589 2009-01-11 Chris Toshok <toshok@ximian.com>
15591 * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
15592 if a DO is frozen, any SetValue() call raises an
15593 UnauthorizedAccessException. We use this for default values of
15594 DependencyProperties.
15596 * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
15597 freeze the default value.
15599 2009-01-11 Andreia Gaita <avidigal@novell.com>
15601 * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(),
15602 it could be called in the middle of a tick. Instead, just reset and
15603 reuse the clock on every tick. Track if the timer is stopped during
15604 a tick so the clock is not relaunched. Set a default duration so
15605 it's never automatic.
15607 2009-01-11 Chris Toshok <toshok@ximian.com>
15609 * text.h, text.cpp (class Inline): generate accessors for
15610 FontFamily, FontSize, and TextDecoration.
15611 (class Inline, class TextBlock): add an internal DP for the font
15613 (Inline::OnPropertyChanged): the only case that's needed at the
15614 moment is foreground, but that's slated for the axe as well.
15616 * dependencyproperty.g.cpp: regen.
15618 * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
15619 make sure we inherit properly across the logical tree if the node
15620 doesn't have a visual parent (this fixes inheritance for non
15621 UIElement's, like Runs). Also, add the FontFilename property to
15622 the list of things that inherit.
15624 * dependencyobject.h,
15625 dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
15626 method. Providers can call this whenever the value at their
15627 precedence level has changed. It contains all the smarts to
15628 correctly generate OnPropertyChanged method calls in the face of
15629 all the provider levels.
15631 2009-01-10 Jeffrey Stedfast <fejj@novell.com>
15633 * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
15634 TextChangedEvent and SelectionChangedEvent. Don't combine those
15635 into the ModelChangedEvent that is only meant for TextBoxView.
15636 (TextBox::OnPropertyChanged): Emit TextChangedEvent and
15637 SelectionChangedEvent appropriately.
15638 (TextBoxView::OnSelectionChanged): New event callback handler.
15639 (TextBoxView::OnTextChanged): Same.
15640 (TextBoxView::OnModelChanged): Don't handle text/selection change
15641 notification here anymore, because those 'change' enum types have
15643 (TextBoxView::OnPropertyChanged): Need to listen to more events.
15645 2009-01-10 Jeffrey Stedfast <fejj@novell.com>
15647 * value.cpp (Value::Value): the const char* ctor now takes a bool
15648 argument specifying whether to take ownership of the string
15651 * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
15652 don't need to keep a char* selection, we only need it temporarily
15653 while creating the Value*.
15654 (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
15656 (TextBox::ClearSelection): Don't set the TextProperty value
15657 anymore. Also don't bother with the setvalue state variable
15659 (TextBox::OnPropertyChanged): Don't worry about setvalue state
15661 (TextBox::TextBox): Get rid of 'setvalue' state.
15663 2009-01-10 Geoff Norton <gnorton@novell.com>
15665 * media.cpp: surface->filename might be NULL, so we need to guard
15666 against this in our cleanup accordingly.
15668 2009-01-09 Chris Toshok <toshok@ximian.com>
15670 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15671 oops. we still need to seal the style if that's the thing we're
15674 2009-01-09 Chris Toshok <toshok@ximian.com>
15676 * Makefile.am (libmoon_include_headers): add provider.h
15677 (libmoon_la_SOURCES): add provider.cpp
15679 * provider.h, provider.cpp: clean up this some. the only provider
15680 really not being used right now is the Animation value provider,
15681 since the animation code assumes it can just set local values.
15683 * shape.cpp (Shape::OnPropertyChanged): no need to look up the
15684 default value - GetValue will return it now.
15686 * textbox.h, textbox.cpp (class
15687 TextBoxDynamicPropertyValueProvider): new custom provider class to
15688 replace the ::GetValue override. Install it in the ctor.
15690 * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
15691 new custom provider class to replace the ::GetValue override.
15692 Install it in the ctor.
15693 (GetBoundingWidth, GetBoundingHeight): don't use
15695 (SetActualHeight, SetActualWidth): no longer needed.
15696 (textblock_property): no longer needed.
15697 (Inline::GetDefaultValue): no longer needed. the inherited
15698 property provider handles it.
15699 (TextBlock::OnPropertyChanged): no need to deal with
15700 Actual{Height,Width}Property here anymore.
15702 * frameworkelement.cpp (FrameworkElement::FrameworkElement):
15703 remove styles initialization.
15704 (FrameworkElement): remove styles destruction.
15705 (FrameworkElement::ClearValue): this doesn't need any styles stuff
15706 anymore - just clear the binding if we have one, and otherwise
15708 (FrameworkElement::GetLocalValue): I'm not sure why this was
15709 looking things up via a style, as styles are a lower priority than
15710 local values. if there's a binding return that, otherwise chain
15712 (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
15714 (FrameworkElement::UpdateFromStyle): remove. the style lookup is
15715 done in the style provider.
15718 * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
15719 public Style* field and use SetStyle to set it.
15720 (Style::GetPropertyValue): new method. this should probably be a
15721 hash lookup instead of the linear lookup, but for now this will
15723 (SetterBaseCollection::ValidateSetter): make this a static method
15724 on the class instead of just a C function.
15726 * dependencyobject.h: add a couple more GetValue overrides to deal
15727 with precedence levels. Remove GetDefaultValue, as it's no longer
15728 needed - we can finally use DependencyProperty::GetDefaultValue as
15729 it's meant to be used.
15731 * dependencyobject.cpp (DependencyObject::GetLocalValue): change
15732 this to just call the LocalValue provider.
15733 (DependencyObject::GetValue (DependencyProperty* property)): call
15734 the overload that lets us specify a starting precedence (start at
15735 the highest precedence level).
15736 (DependencyObject::GetValue (DependencyProperty *property,
15737 PropertyPrecedence startingAtPrecedence)): new method. loop over
15738 the providers until one of them gives us a value.
15739 (DependencyObject::GetValueSkippingPrecedence): we need this for
15740 looking up the value of FrameworkElement::StyleProperty from
15741 inside the style provider.
15742 (DependencyObject::GetValueNoDefault): reimplement this for the
15743 time being using the providers.
15744 (DependencyObject::DependencyObject): register all the default
15745 providers. we leave a DynamicValue slot open for subclasses who
15746 want to implement "computed" properties.
15747 (DependencyObject): free all the providers.
15749 * dependencyproperty.g.cpp: regen
15751 2009-01-09 Geoff Norton <gnorton@novell.com>
15753 * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
15755 2009-01-09 Geoff Norton <gnorton@novell.com>
15757 * media.cpp: Ensure that we actually do change the value of the
15758 Source property when we call MediaBase::SetSource (char*)
15760 2009-01-09 Jeffrey Stedfast <fejj@novell.com>
15762 * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
15763 with layout-hint changes (including TextWrapping hints).
15764 (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
15765 anymore. Also no need to set the wrapping mode here anymore as it
15766 is set in OnProeprtyChanged() now.
15768 * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
15769 it doesn't make sense to have them separate.
15771 * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
15772 we'll pass changes directly to the View as they get updated.
15773 (TextBox::OnPropertyChanged): If the layout hints change, set
15774 changed to the appropriate TextBoxModelChanged hint enum. Also
15775 pass the PropertyChangedEventArgs to the ModelChangedEventArgs
15776 ctor so that TextBoxView can grab the new value to update its
15778 (TextBoxView::OnModelChanged): Handle the new enums.
15779 (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
15780 a new TextBox gets set.
15782 2009-01-09 Alan McGovern <amcgovern@novell.com>
15784 * dependencyproperty.cpp: 'validator' should never be null - it should
15785 be default_validator instead. Regression caused by previous change to
15788 2009-01-09 Alan McGovern <amcgovern@novell.com>
15790 * validators.cpp: Validator only converts -1 to null. All other values
15791 appear to be left the same
15793 2009-01-09 Alan McGovern <amcgovern@novell.com>
15797 * validators.cpp: Add a validator to AudioStreamIndex. This converts
15798 negative values to null, as the unit tests show.
15800 2009-01-09 Alan McGovern <amcgovern@novell.com>
15802 * dependencyproperty.h:
15803 * dependencyproperty.cpp:
15804 * dependencyproperty.g.cpp: Make it possible to use validators with
15805 Nullable properties.
15807 2009-01-08 Jeffrey Stedfast <fejj@novell.com>
15809 * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
15810 (Glyphs::GetFill): Same.
15812 * text.h (class Glyphs): GenerateAccessors for FillProperty too.
15814 * textbox.cpp (TextBox::CursorRight): Implemented.
15815 (TextBox::CursorLeft): Implemented.
15816 (TextBox::GetValue): New override to set the SelectedText property
15817 if the selection has been changed since the last request.
15819 * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
15821 * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
15822 different way so that we don't have to use GetValueNoDefault().
15824 2009-01-08 Larry Ewing <lewing@novell.com>
15826 * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
15828 * geometry.h, geometry.cpp (class RectangleGeometry): remove
15829 GetRadius logic everything is handled property by the properties
15832 2009-01-08 Jeffrey Stedfast <fejj@novell.com>
15834 * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
15837 * keyboard.cpp (Keyboard::KeyIsChar): Removed.
15838 (Keyboard::KeyToChar): Removed.
15839 (Keyboard::KeyIsMovement): Removed.
15841 * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
15842 GetState() to make the purpose clearer.
15843 (KeyEventArgs::IsModifier): New helper method.
15844 (KeyEventArgs::GetKeyVal): New helper method.
15845 (KeyEventArgs::GetUnicode): New helper method.
15847 * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
15848 state, all places that set dirty=true are now handled by
15849 TextBoxView instead. Only call Invalidate() when appropriate. For
15850 selection state changes, check setvalue state to see if we need to
15852 (TextBox::ClearSelection): New helper method to clear the
15854 (TextBox::OnKeyDown): Properly clear the selection using
15855 ClearSelection() so that the DP values get updated.
15857 2009-01-08 Larry Ewing <lewing@novell.com>
15859 * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
15860 replace it with proper NAN state. Remove MixedWidthAndHeight for
15861 c&p checks that will be removed in the layou code.
15863 * frameworkelement.cpp: more nan cleanup.
15866 * control.cpp: handle nan.
15868 2009-01-08 Alan McGovern <amcgovern@novell.com>
15873 * frameworkelement.cpp:
15874 * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
15875 to/from native. This removes a hack in Style where DP's used to be
15876 looked up by name, which couldn't be done with properties registered
15877 through C#. Fixes 2 NUnit tests.
15879 2009-01-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
15882 * validators.cpp: Added DoubleGreaterThanZeroValidator.
15884 * mediaelement.h: Use double validator instead of int validator for
15887 * dependencyproperty.g.cpp: Regenerated.
15889 2009-01-08 Alan McGovern <amcgovern@novell.com>
15891 * dependencyobject.cpp: *Warning - Changing default values* When
15892 DO.ClearValue is called, we always return 'NULL' as the new value.
15893 This is incorrect as the pattern: do.ClearValue (property),
15894 do.GetValue (property) will actually return do.GetDefaultValue
15895 (DependencyProperty*). This change fixes a failing assertion in
15896 StyleTest.cs - ModifyAfterBinding.
15898 2009-01-08 Sebastien Pouliot <sebastien@ximian.com>
15900 * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
15901 Regenerated for ITEM_COLLECTION
15903 2009-01-08 Alan McGovern <amcgovern@novell.com>
15906 * dependencyobject.h:
15907 * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
15908 overridden by Inlines
15910 2009-01-07 Larry Ewing <lewing@novell.com>
15912 * frameworkelement.cpp, frameworkelement.h:
15913 move all the various duplicate versions GetTransformOrigin here.
15915 * mediaelement.cpp: fix GetTransformOrigin for new default values.
15917 * shape.cpp, shape.h:
15918 * canvas.cpp, canvas.h:
15919 * media.cpp, media.h:
15920 * shape.cpp, shape.h:
15921 * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
15925 2009-01-07 Geoff Norton <gnorton@novell.com>
15927 * collection.cpp: Ensure that we call any AddWithError overrides
15928 that might exist in a subclass (like TimelineMarkerCollection) as
15929 it could affect the integer returned.
15931 2009-01-07 Geoff Norton <gnorton@novell.com>
15933 * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
15934 to TextStream::OpenFile
15935 * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
15936 * downloader.cpp: GetResponseText needs to ensure it returns data in
15937 UTF-8, and doesn't handle zip files.
15939 2009-01-07 Jeffrey Stedfast <fejj@novell.com>
15941 * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
15942 input a bit. Cutting a lot of corners for now, but oh well.
15943 (TextBoxView::TextBoxView): Hooked up some cursor blinking
15944 action. We don't actually render the cursor yet tho.
15946 * keyboard.cpp (Keyboard): Moved into it's own source file from
15947 eventargs.cpp. I have a sneaking suspicion that this logic will
15948 get large and complicated someday soon.
15950 2009-01-07 Sebastien Pouliot <sebastien@ximian.com>
15952 * dependencyobject.cpp (set_surface): Add null check since the
15953 hashtable can contain Value with a NULL DependencyObject
15955 2009-01-07 Larry Ewing <lewing@novell.com>
15958 * frameworkelement.cpp:
15959 * shape.cpp: Quick hacks to get test 0 passing after the default
15962 2009-01-07 Chris Toshok <toshok@ximian.com>
15964 * textbox.h (class TextBox): add @CallInitialize so we can set the
15967 * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
15968 call to before ApplyTemplate(), as the template isn't applied
15969 until after the Loaded event is fired.
15971 2009-01-07 Geoff Norton <gnorton@novell.com>
15973 * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
15974 memory cache of all downloads <= 64KB that are streamed in 1 shot.
15976 2009-01-07 Sebastien Pouliot <sebastien@ximian.com>
15978 * contentcontrol.h|cpp: Remove properties that are not in SL2 final
15979 * dependencyproperty.g.cpp: Regenerated.
15981 2009-01-07 Alan McGovern <amcgovern@novell.com>
15986 * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
15987 it to the default cursor instead.
15989 2009-01-06 Larry Ewing <lewing@novell.com>
15991 * uielement.h (class UIElement): add a default value to
15992 UIElement::CusorProperty, fixes a crossing event crash.
15994 * uielement.cpp (UIElement::ElementRemoved): remove the element
15995 from the dirty list since it is an orphan now.
15997 * runtime.cpp (Surface::PaintToDrawable): add some logging.
15999 2009-01-06 Jeffrey Stedfast <fejj@novell.com>
16001 * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
16002 callbacks so that we can eventually make TextBox receive keyboard
16003 input. Currently the events never seem to fire, tho.
16005 2009-01-06 Sebastien Pouliot <sebastien@ximian.com>
16007 * enums.h: Add enums values for MouseCursorSize[NS|WE]
16008 * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
16010 2009-01-06 Alan McGovern <amcgovern@novell.com>
16012 * frameworkelement.cpp:
16013 * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
16014 again after my previous commit changing the handling of
16015 GetValue/GetLocalValue.
16017 2009-01-06 Alan McGovern <amcgovern@novell.com>
16021 * dependencyobject.h:
16022 * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
16023 DP.GetDefaultValue function. Fixed the implementation of 'null'
16024 Value*. Now a Value* with GetIsNull () == true will be returned as
16025 'NULL' for calls to GetValue or GetValueNoDefault. This makes
16026 Value.GetIsNull opaque to native code so existing null checks will
16027 work as they should. The only function which is aware of GetIsNull is
16028 GetLocalValue, and this correctly handles this case.
16030 2009-01-06 Alan McGovern <amcgovern@novell.com>
16035 * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
16036 null string is passed to PasswordBox.Password. Use correct range
16037 validation for MaxLength.
16039 2009-01-06 Alan McGovern <amcgovern@novell.com>
16041 * frameworkelement.h:
16042 * frameworkelement.cpp:
16043 * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
16046 2009-01-06 Alan McGovern <amcgovern@novell.com>
16050 * frameworkelement.cpp: Implement proper validation of Setters and also
16051 correctly implement behaviour of sealed/unsealed styles. They are now
16052 passing all the NUnit tests except for one.
16054 2009-01-05 Chris Toshok <toshok@ximian.com>
16056 * frameworkelement.h, frameworkelement.cpp: remove all reference
16057 to template_namescope.
16059 * template.cpp (ControlTemplate::Apply): remove call to
16060 FrameworkElement::SetTemplateNameScope - just set it as the
16061 namescope on the root of the applied template. This way name
16062 references within the template resolve correctly.
16064 * control.cpp (Control::GetTemplateChild): with the above change,
16065 this just becomes template_root->FindName ()
16067 2009-01-05 Sebastien Pouliot <sebastien@ximian.com>
16069 * runtime.cpp: Add a null check in Surface::FocusElement since both
16070 the C bindings and the MouseLeftButtonDown event can call it with a
16071 NULL value causing a SIGSEGV.
16073 2009-01-05 Jeffrey Stedfast <fejj@novell.com>
16075 * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
16076 TextBoxView in the appropriate place.
16078 * control.cpp (Control::GetTemplateChild): Now takes a const
16081 2009-01-05 Alan McGovern <amcgovern@novell.com>
16083 * uielement.h: Cursor shouldn't have a default value in SL2.
16086 * dependencyobject.h:
16087 * dependencyobject.cpp:
16088 * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
16089 code calling NameScope::[Un]RegisterName to ignore empty names just
16090 like it ignores null names.
16092 2009-01-05 Alan McGovern <amcgovern@novell.com>
16096 * frameworkelement.h:
16097 * frameworkelement.cpp:
16098 * dependencyproperty.h:
16099 * dependencyproperty.cpp:
16100 * dependencyproperty.g.cpp: We need a reference to the current
16101 DependencyProperty so that write-once properties can be properly
16102 validated. Moved validation of StyleProperty from
16103 FrameworkElement.SetValue into the new StyleValidator.
16105 2009-01-05 Alan McGovern <amcgovern@novell.com>
16109 * dependencyobject.cpp:
16110 * dependencyproperty.h:
16111 * dependencyproperty.cpp: When validating the Value we need a reference
16112 to the current DependencyObject as some properties are
16113 write-once/read-only
16115 2009-01-02 Jeffrey Stedfast <fejj@novell.com>
16117 * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
16118 dirty flag. TextBox is basically just a model now. Also added a
16119 ModelChanged event.
16120 (TextBox::Render): Removed.
16121 (TextBox::GetValue): Removed, dunno why it was ever overridden.
16122 (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
16123 view needs to be updated.
16124 (TextBoxView): New class that renders the contents of a TextBox
16127 * value.cpp (Value::GetIsNull): Fixed compiler warning.
16129 * pipeline.h (class MediaMarker): dtor needs to be virtual.
16131 2009-01-02 Sebastien Pouliot <sebastien@ximian.com>
16133 * validators.cpp: Remove the printf calls (that won't compile under
16134 SLED10 without changing includes).
16136 2008-12-22 Alan McGovern <amcgovern@novell.com>
16141 * dependencyproperty.g.cpp: Add validators for the Border class
16145 * value.h.in: unused_padding is now used as a bitfield. Currently used
16146 to indicate whether an object is null or not
16148 * frameworkelement.cpp: the styles hashtable only indicates if the
16149 current value comes from a style. It does not show if a dp has been
16150 bound to a style. If the current value is cleared, we need to update
16151 from the style to repopulate the styles hashtable and correctly set
16152 the style value. This can be optimised by passing the current dp to
16155 * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
16156 set the null value as opposed to calling do.ClearValue(dp).
16158 2008-12-22 Andreia Gaita <avidigal@novell.com>
16160 * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
16161 Regenerated for DispatcherTimer
16163 * animation.h: Move Completed events to the timeline
16165 * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
16166 clock whose duration is the timer Interval property. The timeline's
16167 completed event is a tick of the timer, and the clock gets restarted
16169 Save the current time when a clock starts so that clocks that are
16170 set to be started on the next tick with BeginOnTick include the time
16171 between the BeginOnTick call and the actual Begin in their elapsed
16172 time. Also, clocks beneath the time manager root clock now track time
16173 since they were started, and not since the time manager started.
16175 2008-12-20 Larry Ewing <lewing@novell.com>
16177 * mediaelement.cpp (MediaElement::UpdateProgress):
16178 * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
16179 to 0.05 which appears to be what the docs actually say.
16181 2008-12-19 Sebastien Pouliot <sebastien@ximian.com>
16183 * cbinding.cpp|h: Regenerated for read-only DP.
16184 * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter
16185 to RegisterManagedProperty.
16187 2008-12-19 Alan McGovern <amcgovern@novell.com>
16191 * dependencyproperty.g.cpp: Add validation + tests for
16192 Storyboard.TargetNameProperty and TargetPropertyProperty
16194 2008-12-18 Chris Toshok <toshok@ximian.com>
16196 * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
16197 textbox.h: decorate properties with @Validator attributes which
16198 the generator uses to generate the proper call to
16199 DependencyProperty::RegisterFull.
16201 * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
16202 textbox.cpp: Remove the calls to
16203 DependencyProperty::SetValueValidator. They're generated by the
16204 generator now from our metadata.
16206 * dependencyproperty.cpp, dependencyproperty.h: add new parameter
16207 to RegisterFull prototypes so we can supply a validator at
16210 * dependencyproperty.g.cpp: regen.
16212 2008-12-18 Chris Toshok <toshok@ximian.com>
16214 * validators.cpp, validators.h: move these into a class instead of
16215 static C methods, and don't include C methods into every file. we
16216 were getting warnings every time they went unused, and namespacing
16217 with C++ is better than #including them all over the place.
16219 * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
16220 dependencyproperty.cpp, frameworkelement.cpp: track change above.
16222 2008-12-18 Chris Toshok <toshok@ximian.com>
16224 * xaml.cpp (class XamlElementInstanceManaged): this instance can
16225 be a DependencyObject sometimes. we need an instance field to
16227 (XamlElementInstanceManaged::XamlElementInstanceManaged): when
16228 @obj, set is_dependency_object to true. This fixes setting x:
16229 namescope properties on managed DependencyObject subclasses, as in
16230 '<Button x:Name="foo" />'.
16231 (dependency_object_add_child): remove the template case from here.
16232 it'll be handled differently (being parsed at application time,
16235 2008-12-18 Alan McGovern <amcgovern@novell.com>
16240 * mediaelement.cpp:
16241 * multiscaleimage.h:
16242 * multiscaleimage.cpp:
16243 * frameworkelement.cpp: Add validation to DPs
16245 2008-12-18 Alan McGovern <amcgovern@novell.com>
16247 * mediaelement.cpp: Add validation for NaturalVideoHeight and
16250 2008-12-18 Alan McGovern <amcgovern@novell.com>
16257 * dependencyobject.h:
16258 * frameworkelement.h:
16259 * frameworkelement.cpp:
16260 * dependencyproperty.cpp: Move parameter validation for DP's to use the
16261 new ValueValidator callback.
16263 * validators.h: All validators are defined in this header file so they
16264 can be easily reused for different DPs.
16266 2008-12-18 Alan McGovern <amcgovern@novell.com>
16268 * grid.cpp: Correctly set the validators - forgot to revert changes
16271 2008-12-18 Alan McGovern <amcgovern@novell.com>
16274 * dependencyobject.cpp:
16275 * dependencyproperty.h:
16276 * dependencyproperty.cpp: Add the ability to validate the value for a
16277 DependencyProperty before setting it.
16279 2008-12-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
16281 * text.h, text.cpp: Remove some useless code.
16283 2008-12-16 Alan McGovern <amcgovern@novell.com>
16287 * dependencyproperty.h: If a default value has been set in native code,
16288 propagate that to managed code.
16290 2008-12-15 Chris Toshok <toshok@ximian.com>
16292 * template.cpp (ControlTemplate::Apply): make sure we clear the
16293 toplevel namescope from the template tree. instead we keep a
16294 different namescope around (full of the duplicated elements) which
16295 is populated during DuplicateObject.
16297 2008-12-15 Jeffrey Stedfast <fejj@novell.com>
16299 * xaml.cpp: Macroize the static tables.
16300 (create_binding_expression_from_markup): Got rid of
16301 BindingExtension::path.
16302 (xaml_markup_parse_binding): Update the markup pointer before a
16305 2008-12-15 Jackson Harper <jackson@ximian.com>
16307 * xaml.cpp: fix typo.
16308 - remove sneaky debug
16310 2008-12-15 Jackson Harper <jackson@ximian.com>
16312 * xaml.cpp: Always check if we are in buffering mode. (Otherwise
16313 we'll get cdata content at the end of a template or a namespace
16314 handler during a template).
16316 2008-12-15 Alan McGovern <amcgovern@novell.com>
16319 * dependencyproperty.g.cpp: ShowGridLines is true by default.
16321 2008-12-15 Alan McGovern <amcgovern@novell.com>
16323 * control.cpp: Default foreground brush is black
16325 2008-12-12 Jackson Harper <jackson@ximian.com>
16327 * xaml.cpp: Remove some old code.
16329 2008-12-12 Jackson Harper <jackson@ximian.com>
16331 * xaml.cpp: Still need to call setproperty on non managed
16332 attributes, they could be events.
16334 2008-12-12 Jackson Harper <jackson@ximian.com>
16336 * xaml.cpp: A little cleanup so that we only try setting non-dp
16337 attributes on managed objects. (previously we would try but fail,
16338 so the results are basically the same, just less waste).
16340 2008-12-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
16342 * runtime.h: Make DetachDownloaders public so that the plugin can call
16345 2008-12-12 Alan McGovern <amcgovern@novell.com>
16347 * textbox.cpp: Add bounds checking to SelectionStartProperty too
16349 2008-12-12 Alan McGovern <amcgovern@novell.com>
16352 * textbox.cpp: Add range checking for MaxLengthProperty and
16353 SelectionLengthProperty
16355 2008-12-11 Sebastien Pouliot <sebastien@ximian.com>
16357 * dependencyobject.h: Name setter is public in SL2 final.
16359 2008-12-11 Chris Toshok <toshok@ximian.com>
16361 * control.h, control.cpp: hook up TemplateApplied event.
16363 * type-generated.cpp: regen.
16365 2008-12-11 Chris Toshok <toshok@ximian.com>
16367 * control.h (class Control): generate cbinding/pinvoke for
16370 * cbinding.h, cbinding.cpp: regen.
16372 2008-12-11 Alan McGovern <amcgovern@novell.com>
16374 * textbox.cpp: Unbreak the build.
16376 2008-12-11 Alan McGovern <amcgovern@novell.com>
16378 * textbox.cpp: It should not be possible to set a null value as the
16381 2008-12-11 Alan McGovern <amcgovern@novell.com>
16384 * dependencyproperty.g.cpp: Fix several issues with default values for
16385 TextBox and PasswordBox
16387 2008-12-11 Andreia Gaita <shana@jitted.com>
16389 * cbinding.h|cpp, clock.h: Framerate accessors
16391 2008-12-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
16393 * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
16394 remove some stale code.
16396 2008-12-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
16398 * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
16399 audio field. Added comments/explicit verification in every method
16400 describing which methods must be thread-safe and which aren't.
16402 2008-12-10 Jeffrey Stedfast <fejj@novell.com>
16404 * xaml.cpp (parser_error): Now takes varargs to simplify
16405 things. Fixed all callers to not strdup/g_strdup_printf (and leak)
16406 the message argument.
16407 (create_binding_expression_from_markup): Check that the source is
16408 a DO before casting.
16410 2008-12-10 Alan McGovern <amcgovern@novell.com>
16414 * type-generated.cpp:
16415 * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
16416 is represented by an int32 in unmanaged code.
16418 2008-12-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16420 * audio-pulse.cpp: Fix int->enum conversion.
16422 2008-12-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
16424 * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
16425 random constants for the connected variable.
16427 2008-12-10 Jackson Harper <jackson@ximian.com>
16429 * xaml.cpp: Add a buffering mode to the parser, this mode is used
16430 for templates and simply buffers all the text without doing
16431 any real parsing. So everything between a
16432 <DataTemplate>..</DataTemplate> block is turned into a string.
16434 2008-12-10 Alan McGovern <amcgovern@novell.com>
16437 * textbox.cpp: Implement the SelectAll function and raise an event when
16438 the Password changes
16444 * type-generated.cpp:
16445 * dependencyproperty.g.cpp: Commit the files from the generator.
16447 2008-12-10 Alan McGovern <amcgovern@novell.com>
16449 * textbox.h: Partial implementation of the PasswordBox control
16451 2008-12-09 Chris Toshok <toshok@ximian.com>
16453 * template.h, template.cpp: add DataTemplates.
16455 * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
16458 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
16460 * xaml.cpp (create_binding_expression_from_markup): Converter can
16461 also take a StaticResource.
16463 * playlist.cpp: Don't use ctype is*() with a char argument, these
16464 functions are meant to take unsigned char values cast to an
16465 int. Use the g_ascii_is*() functions instead.
16467 * xaml.cpp (create_binding_expression_from_markup):
16468 ConverterParameter can either be a string or a StaticResource. If
16469 it is a StaticResource, lookup the resource object.
16471 * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
16472 takes a Value* since we need to handle either string or
16475 2008-12-09 Jackson Harper <jackson@ximian.com>
16477 * xaml.cpp: Don't use the cpp initializers.
16478 - More consistent naming.
16480 2008-12-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
16482 * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
16483 pulseaudio to initialize - keep waiting if we get spurious wakeups.
16485 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
16487 * xaml.cpp (create_binding_expression_from_markup): Lookup the
16488 StaticResource property for Source.
16490 * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
16492 (BindingExpressionBase::*): No longer do dynamic lookup of the
16495 2008-12-09 Sebastien Pouliot <sebastien@ximian.com>
16497 * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to
16498 false in C++ constructor.
16500 2008-12-09 Jeffrey Stedfast <fejj@novell.com>
16502 * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
16504 (xaml_markup_parse_binding): Fixed to handle
16505 "Source={StaticResource ...}" syntax.
16507 2008-12-08 Sebastien Pouliot <sebastien@ximian.com>
16509 * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
16510 for UserControl while it's true for Control
16512 2008-12-08 Jeffrey Stedfast <fejj@novell.com>
16514 * xaml.cpp: A bit of refactoring...
16516 * binding.cpp (BindingExpressionBase::SetConverterParameter):
16518 (BindingExpressionBase::SetConverterCulture): Same.
16519 (BindingExpressionBase::SetConverter): Same.
16520 (BindingExpressionBase::SetSourceName): Same.
16521 (BindingExpressionBase::AttachListener): Lookup the source by name
16522 if we don't already have it.
16523 (BindingExpressionBase::GetValue): Same.
16524 (BindingExpressionBase::UpdateSource): Same.
16526 * xaml.cpp (binding_expression_from_str): Finished implementing.
16528 2008-12-07 Jeffrey Stedfast <fejj@novell.com>
16532 Patches by Argiris Kirtzidis
16534 * dependencyobject.h: Fix forward declarations of classes declared
16537 * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
16538 point constant to make sure we get the correct overload in MSVC.
16540 * playlist.cpp (duration_from_asx_str): Same.
16542 * value.cpp (Value::FreeValue): Free corner radius.
16544 2008-12-05 Geoff Norton <gnorton@novell.com>
16546 * audio-pulse.cpp: PulseAudio sometimes gives us errors sync,
16547 and sometimes async. Lets ensure we can actually connect before
16550 2008-12-05 Jeffrey Stedfast <fejj@novell.com>
16552 * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
16554 * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
16557 * binding.h (class Binding): Added more bool members.
16559 * xaml.cpp (binding_expression_from_str): New method to
16560 parse {Binding} markup syntax into a BindingExpression.
16561 (handle_xaml_markup_extension): Parse Binding markup extensions.
16563 2008-12-05 Chris Toshok <toshok@ximian.com>
16565 * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
16566 the GenerateAccessors thing the right way.
16568 * dependencyproperty.g.cpp: regen.
16570 2008-12-05 Jackson Harper <jackson@ximian.com>
16572 * xaml.cpp: Move the markup extension handler out of
16573 set_attributes, ideally each markup extension will get it's own
16574 function eventually.
16576 2008-12-05 Jeffrey Stedfast <fejj@novell.com>
16578 * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
16581 * xaml.cpp: Conditionally define DEBUG, which I guess is a
16582 temporary thing, in a way which will not spew gcc warnings.
16584 2008-12-05 Jackson Harper <jackson@ximian.com>
16586 * xaml.cpp: Let managed code own it's Value pointers.
16588 2008-12-04 Jackson Harper <jackson@ximian.com>
16590 * xaml.cpp: We can store the Value* in the base element instance
16591 now, since they all use a Value.
16593 2008-12-05 Fernando Herrera <fherrera@novell.com>
16596 * playlist.h: Don't check duration at playlist level but let MediaPlayer
16597 handle it. Don't do a delayed element->Play() for repeats because that
16598 can broke js doing "e.Play();e.Stop()"
16600 2008-12-04 Fernando Herrera <fherrera@novell.com>
16602 * playlist.cpp (Playlist::Open): Check duration properly.
16604 2008-12-04 Jeffrey Stedfast <fejj@novell.com>
16606 * binding.cpp: Get rid of excessive use of 'this' keyword.
16608 2008-12-04 Geoff Norton <gnorton@novell.com>
16610 * playlist.cpp: 100ms not 10s should be when we start playing the
16613 2008-12-04 Larry Ewing <lewing@novell.com>
16615 * layout.cpp (RenderLine): do all the filling in one pass rather
16616 than adding a stroke at the end. Tidy up the path creation and
16617 modification logic.
16619 2008-12-04 Jeffrey Stedfast <fejj@novell.com>
16621 We only support vector fonts, so get rid of the TextFont::Render()
16622 API that is only useful as an abstraction over rendering as bitmap
16623 vs pathing. Leave the *Path() APIs which are the only ones
16626 * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
16627 fonts are scalable for now.
16629 * font.cpp (TextFont::RenderGlyphPath): Removed.
16630 (TextFont::Render): Same.
16632 2008-12-04 Sebastien Pouliot <sebastien@ximian.com>
16634 * control.h: Changed my mind and moved DefaultStyleKeyProperty and
16635 IsEnabledProperty to the managed world
16636 * dependencyproperty.g.cpp: regenerated
16638 2008-12-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
16640 * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
16641 size using video and audio streams. Fixes #456154.
16643 2008-12-04 Jackson Harper <jackson@ximian.com>
16645 * xaml.cpp: The element instance now has ownership of the Value
16648 2008-12-03 Jackson Harper <jackson@ximian.com>
16650 * xaml.cpp: Cleanup managed namespaces when we shutdown.
16651 - Reduce the number of Value's we are creating. These still aren't
16652 being freed properly, but at least there isn't as many of them.
16654 2008-12-03 Geoff Norton <gnorton at novell.com>
16656 * media.cpp: Ensure we null our reference to the image loader in
16657 all the failure cases to avoid a possible double free/unref.
16659 2008-12-03 Alan McGovern <amcgovern@novell.com>
16662 * frameworkelement.h:
16663 * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
16664 the binding when the context is altered.
16666 2008-12-03 Alan McGovern <amcgovern@novell.com>
16668 * frameworkelement.h:
16669 * dependencyproperty.g.cpp: DataContext should take 'object'
16671 2008-12-03 Jackson Harper <jackson@ximian.com>
16673 * xaml.cpp: Call setproperty for all the children in the property
16674 block, this is needed because we aren't doing as much magic
16675 collection handling in addchild anymore.
16677 2008-12-02 Sebastien Pouliot <sebastien@ximian.com>
16679 * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
16680 * dependencyproperty.g.cpp: regenerated
16682 2008-12-02 Jackson Harper <jackson@ximian.com>
16684 * xaml.cpp: Map in enumerations in 2.0. So you can do something
16685 like <Visibility>Collapsed</Visibility>
16686 * enums.h|cpp: Expose a function so we can check if a certain enum
16689 2008-12-02 Jackson Harper <jackson@ximian.com>
16691 * xaml.cpp: We can map in non-DO managed elements now, so check to
16692 make sure it's actually a dependency object.
16693 - Pass NULL for the property name if we weren't able to query for
16694 a content property name. The managed backing might be able to
16695 find a name some other way.
16697 2008-12-02 Jackson Harper <jackson@ximian.com>
16699 * xaml.cpp: Return false if the base content property setter didnt
16702 2008-12-02 Alan McGovern <amcgovern@novell.com>
16706 * dependencyproperty.h:
16707 * dependencyproperty.cpp: Ensure the default value of a CustomDP is
16708 propagated to the unmanaged
16710 2008-12-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
16712 * dependencyobject.cpp: We need to raise changed events when clearing
16714 * cbinding.cpp, cbinding.h: Regenerated.
16716 2008-12-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
16718 * dependencyproperty.h: Added a IsNullable setter (instead of adding
16719 yet another parameter to the Register methods).
16721 2008-12-02 Andreia Gaita <shana@jitted.com>
16723 * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
16725 2008-12-02 Andreia Gaita <shana@jitted.com>
16727 * panel.cpp: Fix debugging messages
16729 2008-12-01 Larry Ewing <lewing@novell.com>
16731 * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
16732 we can handle image and video brush opacity properly.
16738 * src/text.cpp: use the new Fill and Stroke methods when using
16739 brushes. Fixes test-imagebrush-opacity* when the masters are
16742 2008-12-01 Chris Toshok <toshok@ximian.com>
16744 * frameworkelement.h: add decl for ClearBindingExpression.
16746 * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
16747 factor out the 2 operations (Detach + hash_remove) here since
16748 we'll be calling it in a couple places.
16749 (binding_destroy): this should delete value, not call ValueFree.
16750 (FrameworkElement::SetBindingExpression): call
16751 ClearBindingExpression if there's a current one, and don't ref the
16752 expression. Value will hold one.
16753 (FrameworkElement::ClearValue): a couple of changes.
16755 1. Call ClearBindingExpression instead of just removing the
16756 binding from the hash (and not detaching it...)
16758 2. don't remove the style value from the style has.
16760 3. instead of looping over all the setters in the style just set
16761 the value back to the value in the styles hash.
16763 4. if we're going to be resetting the value to the style, don't
16764 notify listeners in UIElement::ClearValue. it'll happen in
16767 2008-12-01 Geoff Norton <gnorton@novell.com>
16769 * audio.cpp: Fix a logic error that prevented falling back to alsa when
16770 built with both pulse and alsa support.
16774 2008-12-01 Chris Toshok <toshok@ximian.com>
16776 * template.cpp, template.h: when copying the tree over, register
16777 the template element names to their instantiated counterparts.
16778 and build up a NameScope object as we go.
16780 * frameworkelement.cpp: add a "template_namescope" which maps
16781 names that were registered in the template itself to elements in
16782 the instantiated visual tree.
16784 * control.cpp (Control::GetTemplateChild): look the child up in
16785 the template namescope, not against the visual tree.
16787 2008-12-01 Jackson Harper <jackson@ximian.com>
16789 * xaml.cpp: Value types can not have properties set on them.
16791 2008-12-01 Fernando Herrera <fherrera@novell.com>
16793 * mediaelement.cpp:
16797 * playlist.h: Implement Server side playlists. Still missing duration based
16800 2008-12-01 Alan McGovern <amcgovern@novell.com>
16802 * border.h: ChildProperty should not be exposed
16804 2008-12-01 Alan McGovern <amcgovern@novell.com>
16806 * frameworkelement.cpp: If a null value is being set to a DP when using
16807 databinding, clear the value instead. Makes test pass. (left this out
16808 of the last commit)
16810 2008-11-28 Alan McGovern <amcgovern@novell.com>
16816 * frameworkelement.cpp: DataBinding now works for one-way, one-time and
16817 two-way bindings with managed objects.
16819 2008-11-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
16821 * audio.cpp: Remove a print_stack_trace.
16823 2008-11-27 Andreia Gaita <shana@jitted.com>
16825 * runtime.cpp: enable debug #if that was disabling the D key.
16827 2008-11-27 Alan McGovern <amcgovern@novell.com>
16829 * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
16831 2008-11-27 Alan McGovern <amcgovern@novell.com>
16837 * frameworkelement.cpp: Allow the Binding class to be mapped between
16838 managed and unmanaged code.
16840 2008-11-26 Larry Ewing <lewing@novell.com>
16842 * shape.cpp (Shape::IsCandidateForCaching): add more logic to
16843 avoid the cache in special cases.
16845 2008-11-26 Jackson Harper <jackson@ximian.com>
16847 * xaml.cpp|h: clean up the managed/plugin interface, use Values
16848 for most things instead of expected DependencyObjects.
16849 * deepzoomimagetilesource.h|cpp: Add the uri property and a public
16850 constructor so we can parse these from attributes.
16852 * dependencyproperty.g.cpp: regen
16854 2008-11-26 Alan McGovern <amcgovern@novell.com>
16856 * frameworkelement.cpp: Store a Value * rather than
16857 BindingExpressionBase in the bindings hashtable to allow
16858 GetLocalValue to work.
16860 2008-11-26 Alan McGovern <amcgovern@novell.com>
16862 * frameworkelement.h:
16863 * dependencyobject.h:
16864 * frameworkelement.cpp: Styles are now used/ignored correctly when local
16865 values are set/unset. Added tests for this.
16867 * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
16869 * shape.cpp: args->new_value will be null if DO.ClearValue has been
16870 called. In this case use DP.DefaultValue
16872 2008-11-26 Alan McGovern <amcgovern@novell.com>
16878 * frameworkelement.h:
16879 * dependencyobject.h:
16880 * frameworkelement.cpp:
16881 * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
16882 unmanaged code. Only handles databindings.
16884 2008-11-26 Alan McGovern <amcgovern@novell.com>
16890 * frameworkelement.cpp: Rename the members of BidningExpressionBase to
16891 better reflect their actual usage.
16893 2008-11-26 Alan McGovern <amcgovern@novell.com>
16898 * collection.cpp: InsertWithError should return a bool to match Insert
16901 * media.cpp: Fix regression introduced in r119963 when changing which
16902 collection functions were virtual
16904 2008-11-25 Larry Ewing <lewing@novell.com>
16906 * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
16909 * media.cpp (Image::GetCoverageBounds): be slightly smarter about
16910 computing coverage.
16912 2008-11-25 Geoff Norton <gnorton@novell.com>
16914 * cbinding.(cpp|h): Regenerate
16915 * downloader.h: Expose the status code and status text to the
16916 DownloaderResponse object.
16918 2008-11-25 Alan McGovern <amcgovern@novell.com>
16926 * dependencyproperty.g.cpp: Added full support for sealing styles.
16928 2008-11-25 Stephane Delcroix <sdelcroix@novell.com>
16930 * multiscaleimage.h: element_to_logical_point
16932 2008-11-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
16934 * cbinding.cpp, cbinding.h: Regenerated.
16936 2008-11-24 Larry Ewing <lewing@novell.com>
16938 * media.cpp (MediaBase::SetSource): only queue a tick if we need
16939 to, fixes regression on mediaelement downloaders.
16943 2008-11-24 Larry Ewing <lewing@novell.com>
16945 * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
16946 precise about the coverage bounds. Use the coveragebounds when
16947 invalidating based on position so that we don't invalidate a lot
16948 more area than we need to. Only use CAIRO_FILTER_FAST when
16949 playing use the default when in other states.
16951 2008-11-24 Geoff Norton <gnorton@novell.com>
16953 * media.cpp: If we do a SetSource on a image element with a
16954 completed downloader, short circuit the async call, as the downloader
16955 theoretically can be immediately reused in javascript after the call.
16956 Also remove the internal completed event after its been fired, for the
16957 same reason (downloader reuse). Fixes halo3
16961 2008-11-24 Larry Ewing <lewing@novell.com>
16963 * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
16964 them where appropriate.
16966 * mediaplayer.cpp: use MOON_FORMAT_RGB.
16968 2008-11-24 Larry Ewing <lewing@novell.com>
16970 * brush.cpp, brush.h: add IsAnimating member to indicate if the
16971 brush is expected to change each render tick.
16973 * shape.cpp: don't cache animating brushes.
16975 2008-11-22 Jeffrey Stedfast <fejj@novell.com>
16977 * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
16978 Set the destination element and property on the binding expression
16979 so that we can easily get at them in the callback when the source
16980 property changes. Instead of passing 'this' as the user_data
16981 argument to the property change handler, pass the expression.
16982 (FrameworkElement::BoundPropertyChanged): No longer need to
16983 iterate thru the hash table, we now are able to get all the info
16984 we need from the binding expression.
16985 (FrameworkElement::bound_property_changed): Updated.
16987 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16989 * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16990 Implemented properly (I think/hope).
16992 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
16994 * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
16995 callback and user data.
16996 (BindingExpressionBase::DetachListener): Now takes a callback.
16998 * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16999 Moved here from binding.cpp.
17000 (FrameworkElement::SetBindingExpression): Made protected instead
17002 (FrameworkElement::GetBindingExpression): Same.
17004 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
17006 * frameworkelement.cpp: Fixed to build w/o SL2 support.
17008 2008-11-21 Larry Ewing <lewing@novell.com>
17010 * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
17011 filter in videobrush when scaling.
17015 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
17017 * binding.cpp (changed_cb): Implemented... but it's
17018 wrong. Committing anyay with a big FIXME explaining why it's
17021 * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
17022 New method to set a binding expression for a property.
17023 (FrameworkElement::GetBindingExpression): Get the binding
17024 expression for a property.
17025 (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
17026 stuff to make the logic a bit clearer.
17028 2008-11-21 Jeffrey Stedfast <fejj@novell.com>
17030 * binding.cpp (BindingExpressionBase::AttachListener): We want to
17031 use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
17032 we want to provide our own callback, not re-use
17033 OnSubPropertyChanged() for a purpose it wasn't meant for.
17035 * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
17036 #if 0'd out, we might not need this afterall.
17038 * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
17039 chaining up if the property change wasn't handled.
17041 * text.cpp (Inline::OnSubPropertyChanged): Same.
17042 (TextBlock::OnSubPropertyChanged): Same.
17043 (Glyphs::OnSubPropertyChanged): Same.
17045 2008-11-21 Larry Ewing <lewing@novell.com>
17047 * shape.cpp: disable custom layout code as it seems to have
17048 changed in 2.0 final.
17050 2008-11-21 Alan McGovern <amcgovern@novell.com>
17052 * frameworkelement.cpp: If a style is already set, you cannot set it
17055 2008-11-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
17057 * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
17058 create such a Value.
17060 2008-11-21 Alan McGovern <amcgovern@novell.com>
17062 * frameworkelement.cpp: Implement initial support for using a Style when
17065 2008-11-20 Jeffrey Stedfast <fejj@novell.com>
17067 * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
17068 (TextBlock::OnSubPropertyChanged): Always chain up.
17069 (Glyphs::OnSubPropertyChanged): Always chain up.
17071 * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
17073 * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
17075 * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
17077 * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
17078 might not be correct.
17080 * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
17083 2008-11-20 Jeffrey Stedfast <fejj@novell.com>
17085 * binding.cpp (BindingExpressionBase::AttachListener): Now takes
17086 an FE argument as the listener.
17087 (BindingExpressionBase::DetachListener): Same.
17089 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
17092 2008-11-20 Alan McGovern <amcgovern@novell.com>
17097 * frameworkelement.cpp: Add more support code for databinding.
17099 2008-11-19 Geoff Norton <gnorton@novell.com>
17101 * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
17102 giving up on media entirely.
17106 2008-11-19 Jeffrey Stedfast <fejj@novell.com>
17108 Note: the way this is abstracted will probably go thru several
17109 iterations of change.
17111 * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
17112 Do special handling if setting a binding expression or if the
17113 value is replacing a binding expression.
17115 * dependencyobject.cpp (DependencyObject::IsValueValid): Made
17116 protected, no reason for this to be public.
17117 (DependencyObject::SetValueWithErrorImpl): New virtual method, has
17118 all the code logic of the old SetValueWithError().
17119 (DependencyObject::SetValueWithError): Call IsValueValid() and
17120 then SetValueWithErrorImpl().
17122 2008-11-19 Jeffrey Stedfast <fejj@novell.com>
17124 * frameworkelement.cpp (FrameworkElement::IsValueValid):
17125 Overridden so that we can check if the Value is a
17126 BindingExpression. All DependencyProperties of FrameworkElements
17129 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
17131 * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
17132 Rendered/DroppedFramesPerSecond DP.
17133 * pipeline.cpp: Fix warning.
17135 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
17137 * dependencyproperty.g.cpp: Regenerated.
17138 * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
17139 * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
17140 and DroppedFramesPerSecond.
17142 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
17144 * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
17145 type-generated.cpp, value.h: Added InputMethod.
17147 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
17149 * geometry.cpp: Fix breakage in r119300.
17151 2008-11-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
17153 * dependencyproperty.g.cpp, transform.h: Corcompare.
17154 * geometry.h: Move FillRule from Geometry to
17155 PathGeometry/GeometryGroup.
17157 2008-11-18 Jeffrey Stedfast <fejj@novell.com>
17159 * expression.h, binding.cpp|h: added to the build
17161 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
17163 * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
17165 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
17167 * uielement.h: Define UseLayoutRounding accessors to unbreak build.
17169 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
17171 * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
17172 uielement.h: More corcompare work.
17174 2008-11-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
17176 * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
17177 value.h: Add TriggerBase, make EventTrigger inherit from it and
17180 2008-11-17 Jeffrey Stedfast <fejj@novell.com>
17182 * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
17184 2008-11-17 Michael Dominic K. <mdk@mdk.am>
17186 * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple
17187 repeats when seeking anims with RepeatBehavior >= 2.0).
17189 2008-11-17 Michael Dominic K. <mdk@mdk.am>
17191 * clock.cpp: When running without idle hint (runtime init) do not apply it
17192 here. Makes the idle hint switch actually do something and makes debugging
17195 2008-11-14 Michael Dominic K. <mdk@mdk.am>
17198 * animation.h: The KeySpline quadratics used to generate interpolation
17199 values are generated dynamically = faster and less mem.
17201 2008-11-14 Michael Dominic K. <mdk@mdk.am>
17204 * animation.h: Slightly more nice value caching.
17206 2008-11-14 Geoff Norton <gnorton@novell.com>
17209 * codec-url.h: Update to the final URLs for beta 1
17213 2008-11-14 Geoff Norton <gnorton@novell.com>
17215 * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to
17216 handle the pango markup we're using.
17220 2008-11-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
17222 * mediaelement.cpp: SetMedia: when getting the playlist for an
17223 asxdemuxer, set the media for it. Fixes a memory leak (the media
17224 should get disposed with the playlist gets disposed).
17225 * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
17226 * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
17227 add a parameter to PlaylistEntry::SetMedia to specify whether the
17228 entry should start playing the media or not.
17230 2008-11-13 Sebastien Pouliot <sebastien@ximian.com>
17232 * runtime.cpp (running_on_nvidia): Fix leak of Display
17235 2008-11-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
17237 * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
17238 request even if we're currently playing, there might be a PauseNow
17239 request already queued.
17241 2008-11-11 Sebastien Pouliot <sebastien@ximian.com>
17243 * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
17246 2008-11-11 Geoff Norton <gnorton@novell.com>
17248 * Makefile.am: Only build the appropriate pipeline-ui based on wether
17249 we're building on a os/arch combo that supports the SMP.
17250 * codec-url.h: Set the appropriate CODEC_URL for our target platform
17251 * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
17252 of the codec install pipeline.
17254 2008-11-11 Geoff Norton <gnorton@novell.com>
17256 * debug.h: Its unlikely that debug flags will be set.
17260 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
17262 * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
17263 Plugs a memory leak.
17265 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
17267 * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
17270 2008-11-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
17272 * pipeline.cpp, pipeline.h: Plug a memory leak.
17274 2008-11-10 Geoff Norton <gnorton@novell.com>
17276 * runtime.cpp: Do not enable debug features by default, and remove a
17277 superflous warning.
17280 2008-11-10 Geoff Norton <gnorton@novell.com>
17282 * runtime.cpp: Force NVIDIA binary driver to go to the image backend
17283 to work around serious performance problems when we use accelerated
17287 2008-11-10 Chris Toshok <toshok@ximian.com>
17289 * runtime.cpp (copy_input_list_from_node): rename
17290 copy_input_list_with_visibility_check to this method. the
17291 caller (HandleMouseEvent) already walks over the list to determine
17292 if an element has total render or hittest visibility == false. By
17293 definition, everything before that in the input list (the input
17294 list is ordered from most deeply nested to the root) also has
17295 those == false, so we can short circuit things by traversing from
17296 the tail of the list, and then only copying the nodes we've seen
17297 before (but which come after) the offending one.
17299 2008-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
17301 * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
17302 pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
17303 move that to Playlist(Entry) and Dispose of the playlist instead.
17304 This makes re-playing already played content in playlists work
17307 2008-11-10 Michael Dominic K. <mdk@mdk.am>
17310 * animation.h: Cache some vals internally in *Animation for better
17311 performance in loop-called routines.
17313 2008-11-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
17315 * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
17316 Implement MediaElement.AudioStreamIndex.
17318 2008-11-07 Michael Dominic K. <mdk@mdk.am>
17320 * clock.cpp: Fixing one broken block in the AnimationMatrix2 test.
17321 It was broken but diff was too small to be picked by the test runner.
17323 2008-11-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
17325 * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
17326 need to keep decoding until the entire input has been consumed.
17328 2008-11-06 Geoff Norton <gnorton@novell.com>
17330 * pipline(-ui).cpp: Move the codec location on more time.
17333 2008-11-05 Michael Dominic K. <mdk@mdk.am>
17336 * animation.h: Fixing one more mem-leak case. Fixes #436068.
17338 2008-11-06 Stephane Delcroix <sdelcroix@novell.com>
17340 * downloader.h: change the signature of downloaderRequestFinishedHandler
17341 to pass the resulting uri.
17343 * downloader.cpp: validate the returned uri against redirection policies
17347 2008-11-05 Jeffrey Stedfast <fejj@novell.com>
17349 Patches by Argiris Kirtzidis to fix bug #441687
17351 * audio.cpp: Use g_alloca() to create dynamically sized arrays on
17352 the stack rather than relying on g++ features.
17354 * clock.cpp: Applied MSVC portability patch which implements
17357 2008-11-04 Fernando Herrera <fherrera@novell.com>
17359 * mediaplayer.cpp: Add logging information about selected streams
17362 2008-11-03 Jeffrey Stedfast <fejj@novell.com>
17364 See tests/xaml/test-textblock-actualheight.html and
17365 test-textblock-hittest.html as compared with Microsoft
17368 * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
17369 actually do count toward ActualHeight metrics.
17371 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17373 * audio-pulse.cpp: OnContextStateChanged: always print an error message
17374 if we fail to connect to pa daemon.
17376 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17378 * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
17379 invalidate when that flag is set.
17381 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17383 * runtime.cpp: get_flags: take the default flags as an argument, this
17384 way the environment variables can disable flags which are enabled
17387 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17389 * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
17390 codecs by default for browsers.
17392 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17394 * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
17395 because of a buffer underflow and we're waiting for the initial
17396 frame, enqueue a request for another frame. Fixes #440317.
17398 2008-11-03 Larry Ewing <lewing@novell.com>
17400 * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
17401 extreme exposure issues in popfly.
17403 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17405 * runtime.h: Remove #include <config.h> from headers
17407 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17409 * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
17410 reading a header, try to sync to one. FindMpegHeader: Return proper
17411 error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
17412 #426440 (slideshow doesn't go beyond the first slide).
17414 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17416 * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
17417 opened, the final state is Stopped, not Paused. When media finish,
17418 the final state is Paused, not Stopped. Fixes #365827.
17420 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17422 * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
17423 external reference.
17425 2008-11-03 Fernando Herrera <fherrera@novell.com>
17433 * dependencyobject.cpp:
17436 * http-streaming.cpp:
17439 * mediaelement.cpp:
17441 * mms-downloader.cpp:
17442 * pipeline-asf.cpp:
17443 * pipeline-ffmpeg.cpp:
17452 * yuv-converter.cpp: Change debug macros to runtime conditionals based
17453 on MOONLIGHT_DEBUG env variable of compile time. Checks are only
17454 enabled if configured with --with-debug=yes option.
17456 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17458 * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
17461 2008-11-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
17463 * pipeline-ffmpeg.cpp: Revert r117547 and related.
17465 2008-11-02 Chris Toshok <toshok@ximian.com>
17467 * text.cpp (TextBlock::InsideObject): textblocks are hit only in
17468 their ActualWidth/ActualHeight, not in the full bounding
17469 rectangle. Fixes bug #434258.
17471 2008-10-31 Chris Toshok <toshok@ximian.com>
17473 * runtime.h, runtime.cpp: remove transparency from properties of
17475 (Surface::PaintToDrawable): add a @transparent argument to this
17478 * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
17479 transparency to Surface::PaintToDrawable.
17481 * window.h: move the idea of transparency here from Surface.
17483 2008-10-31 Jeffrey Stedfast <fejj@novell.com>
17485 Portability patch by Argiris Kirtzidis.
17487 * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
17489 * xaml.cpp (start_element): strchr() returns const.
17490 (repeat_behavior_from_str): Same.
17492 2008-10-31 Larry Ewing <lewing@novell.com>
17494 * runtime.cpp (Surface::PaintToDrawable): instead of the content
17495 type check if active_window is fullscreen. This is uglier but the
17496 mozilla hands us rgb drawables not rgba drawables so until we have
17497 a better plan this will solve the problem.
17499 2008-10-31 Larry Ewing <lewing@novell.com>
17501 * runtime.cpp (Surface::PaintToDrawable): only follow the
17502 transparent path if our target supports it.
17504 2008-10-31 Sebastien Pouliot <sebastien@ximian.com>
17506 * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
17507 a bad stream so we dont include NULL holes streams[]
17509 2008-10-31 Michael Dominic K. <mdk@mdk.am>
17511 * runtime.cpp: Reverting for now the recent crossing events
17512 changes -- causes issues with Ink Journal.
17514 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
17516 * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
17517 * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
17518 complex ifs on the GetType return value.
17520 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
17522 * debug.cpp: dlopen libmono too for our stack walking methods.
17524 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
17526 * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
17527 present in older ffmpeg version (r10885).
17529 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
17531 * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
17534 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
17536 * pipeline-ffmpeg.cpp: dlopen ffmpeg.
17538 2008-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
17540 * pipeline.cpp: Fix warning (variable might be used uninitialized).
17542 2008-10-30 Jeffrey Stedfast <fejj@novell.com>
17544 Fix for bug #435815.
17546 * stylus.cpp (StrokeCollection::AddedToCollection): Override so
17547 that we can avoid aborting if a stroke already has a logical
17548 parent (not an error for strokes).
17550 * error.h (MoonError::Clear): New convenience method.
17552 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17554 * libmoon.h: Fix build.
17556 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17558 * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
17559 Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
17560 mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
17561 src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
17562 into its own mediaelement.[cpp|h].
17564 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17566 * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
17567 mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
17568 mplayer.[cpp|h] -> mediaplayer.[cpp|h].
17570 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17572 * cbinding.cpp, cbinding.h: Regenerated.
17574 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17576 * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
17577 mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
17578 pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
17579 pipeline.[h|cpp] to pipeline-asf.[h|cpp].
17581 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17583 * pipeline.h: IMediaDemuxer: Add Source getter.
17584 * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
17585 account streams which aren't selected. IMediaStream::AppendFrame:
17586 update last available pts with the frame's pts.
17587 * media.cpp: MediaElement::CalculateBufferingProgress: never use last
17588 available pts to calculate buffering progress for streams which can
17589 seek to directly to the requested pts. Fix math to check for
17590 negative values to avoid weird results.
17592 2008-10-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
17594 * media.cpp, media.h: MediaElement: fix buffering progress after
17595 seeking regression - don't only use the buffer level in the
17596 pipeline to report buffering progress, but take into accout the
17597 point from where we seek.
17598 * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
17599 the stream's LatestAvailablePts field whenever we read a frame.
17600 Also rename the previous 'stream' (IMediaSource*) field to 'source'
17601 to avoid confusion with AudioStream.
17602 * pipeline.cpp, pipeline.h: Add a last_available_pts field to
17603 IMediaStream and the corresponding GetLastAvailablePts to
17604 IMediaDemuxer, enabling the calculation of correct buffering
17605 progress after a seek. This also requires a codec abi version bump.
17607 2008-10-29 Sebastien Pouliot <sebastien@ximian.com>
17609 * clock.h: Change MilliSeconds_[From|To]Pts to use the new
17610 PTS_PER_MILLISECOND define.
17611 * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
17612 resulting in zero (and the endless loop of #439631).
17614 2008-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
17616 * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
17619 2008-10-28 Jeffrey Stedfast <fejj@novell.com>
17621 * downloader.cpp (scheme_is): Check protocol non-null.
17622 (same_scheme): Same.
17624 * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
17625 instead of file. Also make sure to parse the path in all valid
17628 2008-10-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
17630 * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
17632 * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
17635 2008-10-27 Jeffrey Stedfast <fejj@novell.com>
17637 * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
17638 to parse out the uri scheme.
17640 2008-10-27 Jeffrey Stedfast <fejj@novell.com>
17642 Performance optimization patch for bug #409793
17644 * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
17645 Rect bounds argument so that we can update a bounds of our
17647 (Stroke::ComputeBounds): Updated.
17648 (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
17649 (Stroke::OnCollectionItemChanged): Same.
17650 (InkPresenter::PostRender): Reset stroke dirty regions.
17651 (InkPresenter::OnCollectionItemChanged): Invalidate only the
17652 stroke's dirty region.
17654 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17656 * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
17659 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17661 * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
17663 * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
17664 up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
17665 i.e. the decoder output is the input of the previous time we called
17666 avcodec_decode_video, so keep track of pts from previous frame and
17667 properly set pts of the decoded frame.
17669 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17671 * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
17672 frame is above the target pts (previously we only showed the frame
17673 if the start pts was above the target pts, causing us to show one
17674 frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
17676 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17678 * media.cpp: MediaElement::Play: Call Play when in Opening state too.
17680 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17682 * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
17683 we should just work as if there's no audio at all. The video might
17684 play after the audio has stopped if the a/v streams have different
17687 2008-10-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
17689 * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
17690 queue_mutex unlocked, since the node dtor may cause unrefs, causing
17691 other dtors to be called, and it may all end up in Media::Dispose
17692 which will then try to lock the mutex again (and deadlock).
17694 2008-10-24 Jeffrey Stedfast <fejj@novell.com>
17696 * font.cpp (style_info_parse): Tokenize the style string so that
17697 the individual sub-parsers can be a bit smarter than than
17699 (style_width_parse): Made smarter - now handles lwsp between
17700 multi-word width specifiers (or no lwsp at all).
17701 (style_weight_parse): Same.
17703 2008-10-23 Larry Ewing <lewing@novell.com>
17705 * media.cpp: remove compute bounds since it mirrors
17706 FrameworkElement now.
17708 2008-10-23 Larry Ewing <lewing@novell.com>
17710 * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
17713 2008-10-23 Jeffrey Stedfast <fejj@novell.com>
17715 * textbox.cpp (TextBox::Paint): Updated.
17717 * text.cpp (TextBlock::Paint): Updated.
17719 * layout.cpp (TextLayout::Render): Swapped origin & offset
17720 arguments which feels more natural to me.
17722 2008-10-23 Sebastien Pouliot <sebastien@ximian.com>
17724 * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
17725 width over 2048 pixels since this is likely to be corrupted values.
17726 * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
17727 someday people will laugh at me for proposing such a small value)
17729 2008-10-23 Larry Ewing <lewing@novell.com>
17731 * layout.cpp, layout.h: Change the Render api to drop the uielement argument.
17734 * text.cpp: call layout with the new arguments.
17736 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
17738 * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
17739 fast-forwarding video when seeking to a position which hadn't been
17740 downloaded (since we automatically pause the video then). Fixes
17743 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
17745 * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
17746 DroppedFramesPerSecond. Only in SL 2.0, but very useful for
17749 2008-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
17751 * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
17752 changed size). IMediaStream: Remove msec_per_frame, it's already in
17753 VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
17754 loose less precision.
17755 * mplayer.cpp: Calculate advance frame timeout based on video fps.
17757 2008-10-22 Chris Toshok <toshok@ximian.com>
17759 * runtime.cpp (Surface::HandleUICrossing): disable the crossing
17760 check from r116528 in the case of a windowless plugin (where
17761 event->window == NULL). Also, active_window->GetGdkWindow should
17762 never be trusted to return the actual window - it's use is
17763 strictly to find the screen/monitor for full-screening. In the
17764 windowless case it returns the toplevel netscape window.
17766 2008-10-22 Larry Ewing <lewing@novell.com>
17768 * brush.cpp, brush.h: remove the uielement references from the api
17769 pass the required information as a rect to SetupBrush instead.
17771 * shape.cpp, shape.h:
17777 * broder.cpp: update SetupBrush callers for the new signature.
17779 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17781 * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
17782 last_current_pts to their max value, to detect when they haven't
17783 been set yet. Properly reinitialize these variables (to their max
17784 values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
17786 * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
17787 current pts, handle this. Fixes fast-forwarding issue in #435908.
17789 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17791 * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
17792 use random memory if we don't have a reader.
17794 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17796 * mms-downloader.cpp: Add logging methods.
17798 2008-10-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
17800 * media.cpp: Sprinkle Dispose calls to plug leaks.
17802 2008-10-20 Chris Toshok <toshok@ximian.com>
17804 * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
17805 before reassigning (and reallocating memory for) it.
17807 * dependencyobject.h, dependencyobject.cpp: add an optional
17808 argument to all the EventObject::AddHandler* overloads, called
17809 data_dtor, which is invoked just before the EventClosure is
17810 destroyed so that the data can be freed.
17812 2008-10-20 Chris Toshok <toshok@ximian.com>
17814 * window-gtk.h, window-gtk.cpp: move the Surface conversion from
17815 MouseCursor -> GtkCursor here.
17817 * runtime.h, runtime.cpp: surface only deals with MouseCursors
17818 anymore. the gtk support is in window-gtk now.
17820 * window.h: remove SetCursor (GdkCursor) and add
17821 SetCursor (MouseCursor), so subclasses of MoonWindow can do their
17824 2008-10-20 Jeffrey Stedfast <fejj@novell.com>
17826 * media.cpp (MediaElement::MediaOpened): If the stream decoder is
17827 null, use null for the decoder_name. Fixes a segfault.
17829 2008-10-20 Sebastien Pouliot <sebastien@ximian.com>
17831 * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
17832 since a lot of loops don't handle NULL values.
17834 2008-10-20 Michael Dominic K. <mdk@mdk.am>
17836 * runtime.cpp: More fixes to crossing events: when entering fullscreen
17837 ignore the crossing events coming from previous window. Otherwise we get
17838 double enter/leave pair.
17840 2008-10-20 Michael Dominic K. <mdk@mdk.am>
17842 * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case
17843 correctly (no parent window).
17845 2008-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
17847 * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
17848 nothing if not DEBUG is set, removing the need for surrounding all
17849 print_stack_trace calls with #if DEBUG.
17851 2008-10-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
17853 * pipeline.cpp: Remove debugging code.
17855 2008-10-17 Michael Dominic K. <mdk@mdk.am>
17859 * applier.h: Fixing one more osbcure case of Storyboard transitions where
17860 stopping a prev sboard makes the next one starting from bad base value.
17862 2008-10-17 Michael Dominic K. <mdk@mdk.am>
17864 * runtime.cpp: Make sure we get the new pointer motion notify when
17865 entering/leaving fullscreen. This fixes the fullscreen-enter-leave test
17866 but interestingly doesn't fix the original problem of #434267.
17868 2008-10-17 Sebastien Pouliot <sebastien@ximian.com>
17870 * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
17871 when using "backend=image".
17873 2008-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17875 * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
17876 now, not tiled), and fix inner loop, we were including one pixel
17877 too many for width and height.
17879 2008-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
17881 * pipeline.cpp: RegisterMSCodecs: if there's no codec in
17882 ~/.mozilla/plugins, use just the filename of the codec library and
17883 make dlopen search for it. This makes it easier to run parallell
17884 tests from different revisions without having the codecs from each
17885 revision overwrite eachother in user's home.
17887 2008-10-16 Geoff Norton <gnorton@novell.com>
17889 * pipeline.cpp: Dont tile our logo, it looks like ass. Lets
17890 center it in the available window instead.
17892 2008-10-16 Geoff Norton <gnorton@novell.com>
17894 * pipeline-ui.cpp: Avoid a resize when realizing which causes an
17895 annoying flicker in the codec window.
17897 2008-10-16 Geoff Norton <gnorton@novell.com>
17899 * pipeline.cpp: Unbreak the world.
17901 2008-10-16 Geoff Norton <gnorton@novell.com>
17903 * pipeline(-ui).cpp: Use the updated mscodec name and location.
17905 2008-10-16 Fernando Herrera <fherrera@novell.com>
17907 * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
17909 2008-10-16 Sebastien Pouliot <sebastien@ximian.com>
17911 * text.cpp (TextBlock::Layout): Delay allocation of List so that we
17912 don't leak when TextBlock::TextProperty is NULL.
17914 2008-10-16 Sebastien Pouliot <sebastien@ximian.com>
17916 * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
17917 on the window. Fix one more leak.
17919 2008-10-16 Jb Evain <jbevain@novell.com>
17921 * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
17922 mark managed constructor internal.
17924 2008-10-16 Jb Evain <jbevain@novell.com>
17926 * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
17927 instead of an ArgumentException when providing an out of range index.
17929 2008-10-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
17931 * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
17933 2008-10-15 Chris Toshok <toshok@ximian.com>
17935 * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
17936 is already down, and if so, don't emit another event. (really?
17937 there's a test for this? ugh.). also, let Keyboard know the key
17939 (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
17941 * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
17942 quite a bit -- it might soon deserve its own file. It now
17943 maintains a static hashtable of keys that are pressed/released
17944 inside the moonlight plugin, and has logic to map a gdk keyval to
17945 Key, and query if a particular key is pressed.
17947 2008-10-15 Larry Ewing <lewing@novell.com>
17949 * uielement.cpp: fix the transform ordering.
17951 * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
17953 2008-10-15 Larry Ewing <lewing@novell.com>
17955 * uielement.cpp, uielement.h: remove UpdatePosition and
17956 ComputePosition, all transform changes are handled in
17957 ComputeTransform now.
17959 * shape.cpp, shape.h: update for the new transform api.
17961 * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
17963 * canvas.cpp: Use UpdateTransform.
17965 * point.h: add a (lame) == operator.
17967 2008-10-15 Larry Ewing <lewing@novell.com>
17969 * geometry.cpp, geometry.h: add shape bounds caching to all
17970 geometry classes apply the transform when retrieving the bounds.
17971 Make GetBounds the public bounds interface and make the
17972 computation interface protected.
17974 * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
17976 2008-10-14 Larry Ewing <lewing@novell.com>
17978 * geometry.cpp, geometry.h: remove unused arguments to
17979 ComputeBounds remove caching from PathGeometry.
17981 * uielement.cpp, shape.cpp: call with correct arguments.
17983 2008-10-14 Larry Ewing <lewing@novell.com>
17985 * uielement.cpp, uielement.h: make ComputeTransform virtual and
17986 have it return a bool.
17988 * shape.cpp, shape.h: override ComputeTransform and optimize the
17989 bounds computations. Use a general ComputeShapeBounds for actual
17990 drawn bounds compuations for now.
17992 * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
17993 circuit path to DirtyTransform for elements that can recompute
17994 without updating bounds.
17996 2008-10-13 Larry Ewing <lewing@novell.com>
17998 * geometry.cpp, geometry.h: remove unused arguments from function
18001 * uielement.cpp, shape.cpp: update calls.
18003 2008-10-15 Jeffrey Stedfast <fejj@novell.com>
18005 Fix for bug #435798
18007 * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
18008 that we are setting the default brush/inlines.
18009 (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
18012 2008-10-14 Chris Toshok <toshok@ximian.com>
18014 * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
18016 (MoonWindowGtk::InitializeFullScreen): unref the return value of
18019 * cbinding.h, cbinding.cpp: regen so we don't have to use void*
18020 for the parent parameter to MoonWindowGtk.
18022 2008-10-14 Sebastien Pouliot <sebastien@ximian.com>
18024 * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
18025 the hashtable while we're flushing it on shutdown. Add a few more
18026 checks and avoid re-creating the hashtable on flush.
18028 2008-10-14 Geoff Norton <gnorton@novell.com>
18030 * pipeline-ffmpeg.cpp: FFMpeg changed the API with version #52, no
18031 longer requiring the bits_per_pixel.
18033 2008-10-14 Stephane Delcroix <sdelcroix@novell.com>
18035 * window.h: GetGdkWindow () method
18037 * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
18038 taking the parent window reference. Only go fullscreen on the monitor
18039 moonlight is running on.
18041 * runtime.cpp: call the new MoonWindowGtk ctor
18043 2008-10-14 Fernando Herrera <fherrera@novell.com>
18045 * pipeline-ui.cpp: Override codecs download URL with
18046 MOONLIGHT_CODEC_URL env variable if present.
18048 2008-10-13 Jeffrey Stedfast <fejj@novell.com>
18050 * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
18051 variable expecting it to be the value returned from read(), don't
18052 modify it inside the loop, use another variable for that. Before
18053 eating leading whitespace, make sure we have data.
18055 2008-10-13 Fernando Herrera <fherrera@novell.com>
18057 * audio.cpp: Fix AudioSources::GetNext iteration for next playing
18058 source logic. Fixes bug #433267
18060 2008-10-13 Jeffrey Stedfast <fejj@novell.com>
18062 * media.cpp (MediaElement::Play): Don't add a TickCall to start
18063 playing if we haven't even opened the media yet. Fixes bug
18066 2008-10-13 Michael Dominic K. <mdk@mdk.am>
18068 * dependencyproperty.cpp: Fixing a mem leak.
18070 2008-10-13 Michael Dominic K. <mdk@mdk.am>
18072 * animation.cpp: Reverting the whole attaching-to-prev storage in Begin.
18073 This fixes some recent problems in PopFly.
18075 2008-10-10 Jeffrey Stedfast <fejj@novell.com>
18077 * downloader.cpp (validate_policy): Made static so we don't export
18080 2008-10-10 Sebastien Pouliot <sebastien@ximian.com>
18082 * dependencyproperty.cpp (detach_target_func): Fix bad function
18083 signature for GHFunc.
18084 * dependencyobject.cpp (unref_object): Fix bad function signature
18087 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
18089 * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
18090 start buffering until this is set to true (starts out as false).
18091 * media.cpp: Only enable buffering on the media after reading the
18092 markers, otherwise we may loose markers in the beginning of the
18093 media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
18094 tick call to notify the MediaElement that a marker has been added,
18095 always check in AdvanceFrame.
18096 * mplayer.cpp: Add a null check in a printf.
18098 2008-10-10 Larry Ewing <lewing@novell.com>
18100 * media.cpp (Image::DownloaderComplete): handle the case where the
18101 sureface uri and the new uri are the same.
18103 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
18105 * pipeline-logo.cpp: New logo.
18107 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
18109 * media.cpp: MediaElement::Reinitialize: Dispose the media to break
18111 * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
18112 get non-decoded frames anymore. Open: Handle null demuxers,
18113 shouldn't happen, but at least we won't crash if it happens.
18114 * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
18115 Media::Open: unref the decoder after giving it to the stream, the
18116 stream now take a ref on the decoder. Media::EnqueueWork:
18117 queued_requests might be nothing if we're disposed. IMediaStream:
18118 move cleanup to dispose and take a ref on the decoder. Add decoder
18119 getter/setters, and update code to use them.
18121 2008-10-10 Sebastien Pouliot <sebastien@ximian.com>
18123 * applier.cpp: Fix another bad function signatures for GFunc.
18125 2008-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
18127 * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
18128 FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
18129 stuttering when using ffmpeg.
18131 2008-10-09 Jackson Harper <jackson@ximian.com>
18133 * runtime.cpp: The resize event is only emitted when switching
18134 from fullscreen to non fullscreen.
18136 2008-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
18138 * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
18141 2008-10-09 Jackson Harper <jackson@ximian.com>
18143 * runtime.cpp: When we change to/from fullscreen there should be a
18146 2008-10-09 Sebastien Pouliot <sebastien@ximian.com>
18148 * media.cpp (Image::CreateSurface): Protect against a NULL
18149 filename (valid value). This will avoid crash like bug #433810
18150 even if, in this case, the problem lies elsewhere (bad downloader
18151 which looks related to #433814).
18153 2008-10-09 Jeffrey Stedfast <fejj@novell.com>
18155 * font.cpp (FontFace::LoadDefaultFace): Pass the families to
18156 LoadDefaultFont() for font name comparison, we need to match the
18157 font names exactly or fall back to the next font.
18159 2008-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
18161 * audio.cpp: Add a nullcheck.
18163 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
18165 * media.cpp (Image::IsSurfaceCached): Don't leak (actually
18168 2008-10-08 Jeffrey Stedfast <fejj@novell.com>
18170 * font.cpp: Add fallback for Liberation fonts.
18172 * pipeline.cpp (Media::Warning): Replacement for both
18173 Media::AddMessage() methods.
18175 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
18177 * applier.cpp: Fix function signatures for GFunc and GHFunc.
18178 Fix random crash when closing silverlight world #433461
18180 2008-10-08 Larry Ewing <lewing@novell.com>
18181 * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
18182 any existing render_cb attachments before adding new ones in case
18183 our realize wordering is out of sync.
18185 Fixes the rest of b.n.c #432975
18187 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
18189 * mp3.cpp: Fix boolean->MediaResult logic.
18191 2008-10-08 Jackson Harper <jackson@ximian.com>
18193 * playlist.cpp|h: When we encounter invalid characters in an
18194 attribute try to patch them and reparse the document.
18196 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
18198 * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
18199 block sizes instead of hard-coded almost-matching values. Make
18200 mpeg_frame_length return a floating point value, and in ReadHeader
18201 calculate total duration using floating point. Fixes
18202 test-mp3-media-properties.html
18204 2008-10-08 Stephane Delcroix <stephane@delcroix.org>
18206 * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
18207 1.8.0, changing the error msg.
18209 2008-10-08 Sebastien Pouliot <sebastien@ximian.com>
18211 * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
18212 on bad XAML input when no (NULL) dependecy property is returned.
18214 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
18216 * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
18217 MediaMarker refcounted. Fix a couple of crashing leakfixes, and
18218 simplify cleanup code a tiny bit.
18220 2008-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
18222 * audio-pulse.h: Remove unused method definition.
18224 2008-10-07 Jeffrey Stedfast <fejj@novell.com>
18226 * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
18227 the old baseValue before allocating a new one.
18229 * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
18230 delete dx_info when we're done with it. Also get rid of the
18231 unneeded parser pointer since we're just using this->parser
18234 2008-10-07 Sebastien Pouliot <sebastien@ximian.com>
18236 * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
18237 GdkColor unless we need them. Unref the pixmap after the call to
18238 gdk_cursor_new_from_pixmap.
18240 2008-10-06 Jeffrey Stedfast <fejj@novell.com>
18242 * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
18243 a MediaFrame leak-per-node whenever the queue is cleared.
18245 * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
18246 frame->bufefr before updating it to point to a new malloc'd
18248 (ASFDemuxer::TryReadFrame): Delete the frame on error.
18249 (IMediaStream::PopFrame): After getting the node's frame, set the
18250 node->frame to NULL.
18252 2008-10-06 Larry Ewing <lewing@novell.com>
18254 * media.cpp, media.h: rework image code to skip using a downloader
18255 when a cached image surface is available. Fix a crash where
18256 multiple loading errors occur for a single image. Rewrite
18257 existing SetSourceAsync ticks when the source changes again before
18258 the initial tick was processed.
18260 The goal here is to greatly reduce the work we do in cases where
18261 existing sources are moved between images. Future work should
18262 consist of moving things to the ImageSource model internally.
18264 2008-10-06 Sebastien Pouliot <sebastien@ximian.com>
18266 * text.cpp (Glyphs::Layout): Handle NULL values coming from
18267 GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did
18268 not come up before today or why it now fails anyway).
18270 2008-10-06 Jeffrey Stedfast <fejj@novell.com>
18272 * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
18273 stuff, it's too expensive for what we need.
18274 (ImageBrush::TargetUnloaded): Same.
18276 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
18278 * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
18280 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
18282 * pipeline.cpp: Reorganize some code.
18284 2008-10-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
18286 * audio.cpp, audio.h: Access the Media directly to enqueue frames,
18287 avoiding the need for a tick call on the main thread. If audio
18288 underflowed and we don't have more data available, set buffer
18289 underflow flag on the media player.
18290 * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
18291 the data available, return MEDIA_NOT_ENOUGH_DATA.
18292 * downloader.cpp, downloader.h: Remove RequestPosition methods, no
18294 * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
18295 use that value to determine if we should seek or not.
18296 * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
18297 audio/video needs more data, but the buffer is empty.
18298 * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
18299 have an in-memory buffer of demuxed frames (one queue for frames
18300 for each stream), and calculate buffer size from that.
18301 ProgressiveSource: open an additional file descriptor for writing,
18302 makes locking unnecessary. Change al io to return failure if there
18303 is not enough data, this allows us to remove all the
18304 blocking/waiting logic. MemoryQueueSource: push seeks to
18305 MmsDownloader, instead of waiting for MmsDownloader to check for
18306 pending seeks. FileSource: don't reinvent the wheel and use stdio
18307 to get buffered io instead of having buffering logic ourselves.
18308 * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
18309 underruns correctly.
18310 * media.cpp: MediaElement: Retrieve buffer size from the demuxer
18311 instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
18312 trying to open media and retry later on.
18314 2008-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
18316 * src.mdp: Updated.
18318 2008-10-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
18320 * dependencyobject.cpp: Use atomic operations with
18321 objects_created|destroyed.
18323 2008-10-02 Chris Toshok <toshok@ximian.com>
18325 * resources.cpp (glib_is_stupid): we need to cast value in order
18328 2008-10-02 Geoff Norton <gnorton@novell.com>
18330 * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
18331 Add some headers needed to compile when #undef DEBUG
18333 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
18335 * xaml.cpp: Fix mixup between delete and g_free
18337 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
18339 * value.cpp: Fix == for KeyTime (padding too). Add comments and
18340 indent method correctly.
18342 2008-10-02 Jeffrey Stedfast <fejj@novell.com>
18344 * xaml.cpp: Move the definition of XamlElementInfo to the top so
18345 that g++ doesn't complain about deleting an incomplete type inside
18346 the XamlElementInstance dtor. Also gets rid of other g++ compiler
18349 * list.cpp (List::InsertAfter): New convenience function to sort
18350 of balance the API.
18352 * font.cpp (FontFace::Load): Don't ref the default face, it is
18353 returned to us with a ref already.
18355 2008-10-02 Jackson Harper <jackson@ximian.com>
18357 * xaml.cpp: Now that Info's aren't shared, Instance's can free
18358 them. Also properties need to free their name.
18360 2008-10-02 Larry Ewing <lewing@novell.com>
18362 * geometry.cpp (Geometry::OnSubPropertyChanged): move
18363 OnSubPropertChanged to Geometry to pick up transform changes until
18364 a better solution is devised. Fixes updated
18365 test-clip-invalid-update.htm.
18367 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
18369 * value.cpp: Fix == for Duration and RepeatBehavior. We can't
18370 use memcmp to compare them since they include (unassigned)
18371 padding. Both structs overrides their == operator so we use that.
18373 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
18375 * resources.cpp: Free the values (not only their content) when
18376 the hash table is destroyed. Correctly (delete) free the value
18377 when compiled against glib < 2.12 (e.g. SLED10).
18379 2008-10-02 Sebastien Pouliot <sebastien@ximian.com>
18381 * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
18382 mess clipping. Add similar fill rule setting code in Geometry::Draw
18383 because Shape::Fill is not called for clipping (but the fill rule
18384 still applies). Comment both so I don't mess with them again :)
18386 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
18388 * font.cpp (FontFace::LoadGlyph): We need to force the font size
18389 if we don't own it, since we don't know what the current size is
18391 (FontFace::Kerning): Same.
18392 (FontFace::GetExtents): Here too.
18394 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
18396 Attempt #2 at fixing bug #430766.
18398 * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
18399 - this helps us do better fallback for bug #430766.
18400 (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
18401 try to use the Microsoft Lucida Sans font if available. If not,
18402 fall back to GNOME's Bitstream Vera Sans font. Then fallback to
18403 DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
18404 render many of the glyphs in bug #430766, hence why it is last
18405 choice). If the user doesn't have the X.Org fonts, he's SOL.
18407 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
18409 * value.h[.in],value.cpp: Fix operator == to work for non-DO and
18410 non-string values. This fix the issue of removing stuff from a
18411 ResourceDictionary (while a copy still exists in the underlying
18414 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
18416 Attempt #1 at fixing bug #430766.
18418 * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
18419 argument to LoadFontFace() so that we don't fail when matching the
18420 loaded family name.
18422 2008-10-01 Jeffrey Stedfast <fejj@novell.com>
18424 * font.cpp (FontFace::OpenFontDirectory): Now a static class
18426 (FontFace::LoadFontFace): New static method which tries to load an
18427 FT_Face given an FcPattern and a list of families.
18428 (FontFace::FontFace): No longer tries to load an FT_Face, instead
18429 we have it passed to us as an argument.
18430 (FontFace::LoadDefaultFace): New static method to load a global
18431 FT_Face representing the default system font.
18432 (FontFace::GetDefault): Instantiates a new FontFace using the
18433 global system default FT_Face.
18434 (FontFace::Load): Now takes only a TextFontDescription (much
18435 cleaner/simpler). If we are loading the default system font or if
18436 loading the requested font fails, simply return a new FontFace
18437 based on the global system default FT_Face.
18438 (TextFont::TextFont): Now takes fewer arguments (cleaner API,
18440 (TextFont::Load): Now only takes a TextFontDescription argument to
18441 make the API simpler/cleaner.
18442 (TextFontDescription::CreatePattern): Now public and takes a
18443 'sized' argument specifying whether or not the created pattern
18444 should include the size field. This is needed because TextFont
18445 caches based on all attributes while FontFace caches on everything
18446 but size. Also, don't include weight, width, or slant if our font
18447 family is the default (Portable User Interface is not allowed to
18448 have any of those attributes).
18449 (TextFontDescription::IsDefault): New method to decide if our
18450 family is the default or not.
18451 (TextFontDescription::GetFamilies): New convenience method to
18452 strsplit the family string into an array.
18453 (TextFontDescription::SetFamily): If the value "Portable User
18454 Interface" is set, set our family to NULL instead.
18456 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
18458 * geometry.cpp (GeometryGroup::Draw): Make sure the original
18459 fill rule is still in effect at the end of drawing the group.
18461 2008-10-01 Chris Toshok <toshok@ximian.com>
18463 * geometry.cpp (GeometryGroup::Draw): reinstate the call to
18464 cairo_set_fill_rule removed in r105643. This fixes
18465 http://mapul.com/Tutorials.html.
18467 2008-10-01 Sebastien Pouliot <sebastien@ximian.com>
18469 * shape.cpp: (Shape::InsideObject) Move cairo_save after the
18470 extents.PointInside check since there was no cairo_restore
18471 if false was returned. Looks likely that false was not much
18472 returned (if ever).
18474 2008-09-30 Chris Toshok <toshok@ximian.com>
18476 * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
18477 recompute our bounds when an item (can only be a stylus point)
18478 changes its properties. Fixes stroke bounds in the face of
18479 dragging text in inkjournal.
18481 2008-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
18483 * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
18484 pa_stream_[cork|trigger|flush|drain] since the audio source might
18485 have gotten deleted by the time the callback is called.
18487 2008-09-30 Chris Toshok <toshok@ximian.com>
18489 * dirty.cpp (Surface::ProcessDownDirtyElements): use
18490 AddDirtyElement instead of |= to set flags, since it might require
18491 dirty list manipulation.
18493 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
18495 * xaml.cpp: Fix (again) the leaks in dependency_object_add_child,
18496 this time with new/delete to make it work with non-DO.
18498 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
18500 * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
18502 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
18504 * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
18507 2008-09-30 Stephane Delcroix <sdelcroix@novell.com>
18509 * downloader.cpp: fix the leak in validate_policy.
18511 2008-09-30 Sebastien Pouliot <sebastien@ximian.com>
18513 * debug.cpp: Make sure allocated 'binary' is freed in every case
18514 inside addr2line_offset.
18516 2008-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
18518 * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
18519 ensures that the dtor won't be called while playing or that we'll
18520 be playing destructed sources, but Close might be called at any
18523 2008-09-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
18525 * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
18526 underflows and /0 errors.
18528 2008-09-29 Chris Toshok <toshok@ximian.com>
18530 * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
18531 if during the course of traversing the tree, we come across a temp
18532 namescope, merge that up instead of recursing down even further.
18533 (DependencyObject::SetLogicalParent): only clear the namescope if
18534 we're merging ourselves into a parent namescope.
18536 * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
18537 here. the parser does it for us if we're parsing an element, and
18538 programmatically created objects don't seem to have them.
18540 2008-09-29 Jeffrey Stedfast <fejj@novell.com>
18542 * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
18543 to get the download policy based on the uri. By default, returns
18545 (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
18547 (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
18548 of hardcoding mms:// check.
18549 (MediaBase::OnPropertyChanged): Same.
18551 * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
18552 (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
18553 image once we have at least 1 target which is loaded in the visual
18555 (ImageBrush::TargetUnloaded): Disallow image downloads once our
18556 loaded_count falls back to 0.
18557 (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
18559 (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
18560 and Unloaded events placed on the target object.
18562 * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
18564 * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
18565 AddTarget()/RemoveTarget() on DO property values as they are
18567 (DependencyObject::AddTarget): New virtual method which gets
18568 called on DependencyObject property values when they are set on a
18570 (DependencyObject::RemoveTarget): Same but when unset.
18572 * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
18573 state-change of allowing new downloads vs not.
18574 (MediaBase::OnLoaded): Call SetAllowDownloads(true).
18576 2008-09-29 Jeffrey Stedfast <fejj@novell.com>
18578 * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
18579 state. Fixes some regressions introduced by moving the async
18580 downloading logic from MediaBase::SetSurface() into
18581 ImageBase::OnLoaded().
18583 2008-09-29 Sebastien Pouliot <sebastien@ximian.com>
18585 * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
18587 2008-09-28 Chris Toshok <toshok@ximian.com>
18589 * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
18590 SetValue (NameProperty) - just set the NameProperty, it'll update
18591 the proper namescope automatically.
18592 (get_parent): remove.
18593 (set_parent): remove. we no longer need to maintain a temporary
18594 chain while parsing. there's also no need for set_parent(NULL)
18596 (XamlElementInstance::TrySetContentProperty): if there was an
18597 error in DependencyObject::SetValueWithError or
18598 Collection::AddWithError, raise a parser error.
18599 (dependency_object_add_child): call
18600 Collection/ResourceDictionary::AddWithError, and raise a
18601 parser_error if it fails. also, remove set_parent (NULL) calls.
18603 * dependencyobject.h,
18604 dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
18605 (DependencyObject::RegisterAllNamesRootedAt): this now takes a
18606 MoonError argument so we can signal when there's been a conflict.
18607 (DependencyObject::SetLogicalParent): this also now takes a
18608 MoonError argument, and this is where ALL the namescope merging
18609 code lives. It's been removed from everywhere else. Also, this
18610 change means we can no longer be setting/clearing the parent in
18611 xaml.cpp, as it destroys temp namescopes.
18613 * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
18614 a MoonError parameter, so we can communicate back an
18615 error (conflicting names) properly.
18616 (NameScope::Dump): new method.
18618 * collection.h, collection.cpp (Collection::AddWithError): new
18619 method, generate a binding for this instead of Add. This allows
18620 us to check for name conflicts when a DOCollection is updated.
18621 (Collection::InsertWithError): same. Also, this method has
18622 something quirky about it - it calls AddedToCollection *before*
18623 the collection is modified. suck, but the logic in that code
18624 needs to be run before the change occurs.
18625 (Collection::AddedToCollection): add a MoonError arg so we can
18626 properly pass errors back up.
18627 (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
18629 (DependencyObjectCollection::AddedToCollection,
18630 DependencyObjectCollection::RemovedFromCollection): remove
18631 namescope handling from here.
18634 animation.cpp (KeyFrameCollection::AddedToCollection): track api
18635 change to Collection::AddedToCollection.
18637 * resources.h, resources.cpp: track changes to AddedToCollection,
18638 RegisterAllNamesRootedAt, and AddWithError. Also, remove
18639 namescope handling code from here.
18641 * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
18643 2008-09-28 Chris Toshok <toshok@ximian.com>
18645 * geometry.cpp (Geometry::OnPropertyChanged): this method was
18646 never chaining up to DependencObject::OnPropertyChanged, which it
18647 must do for properties whose ownerType != Geometry.
18649 2008-09-28 Chris Toshok <toshok@ximian.com>
18651 * media.cpp (TimelineMarkerCollection::Add): no need to check the
18652 element type of the value, by the time it makes it here it should
18653 already be the right type.
18655 2008-09-26 Jeffrey Stedfast <fejj@novell.com>
18657 * media.cpp (MediaBase::OnLoaded): Logic moved here from
18659 (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
18660 should start the downloader yet.
18662 * xaml.cpp: Revert the hydrating check for SetSurface() from the
18663 previous commit. This is causing a bunch of failures :(
18665 2008-09-26 Jeffrey Stedfast <fejj@novell.com>
18667 * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
18668 parser_info->hydrating and parser_info->hydrate_expecting based on
18669 whether or not we are really doing a HydrateFromString() vs
18670 CreateFromString().
18671 (create_element_info_from_imported_managed_type): Only
18672 SetSurface() if we are hydrating.
18673 (XamlElementInstanceNative::CreateItem): Same.
18674 (XamlElementInfoManaged::CreateElementInstance): Here too.
18675 (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
18676 (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
18677 (XamlElementInfoImportedManaged::CreateElementInstance): Same.
18678 (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
18679 (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
18681 2008-09-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
18683 * dependencyobject.cpp, dependencyobject.h: Make objects_created and
18684 objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
18685 track a specific type, might be useful when the id varies from run
18686 to run. Make Dispose public.
18687 * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
18689 * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
18690 cleanup properly there instead of in the dtor. This breaks a
18691 circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
18693 2008-09-26 Stephane Delcroix <sdelcroix@novell.com>
18695 * downloader.cpp: use StreamingPolicy for streaming
18697 2008-09-25 Jeffrey Stedfast <fejj@novell.com>
18699 * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
18700 g_str_has_prefix() on NULL strings.
18702 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18704 * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
18705 only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
18707 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18709 * downloader.cpp: validate_policy: Fix boolean logic according to
18710 comment, fixes crash.
18712 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18714 * media.cpp: Plug one more leak.
18716 2008-09-25 Stephane Delcroix <sdelcroix@novell.com>
18718 * downloader.cpp: neforce security policies on Open ()
18720 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18722 * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
18723 for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
18726 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18728 * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
18730 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18732 * downloader.cpp: Fix a potential leak.
18734 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18736 * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
18737 delete the listener link, not only remove it. Plugs a leak.
18739 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18741 * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
18742 yuv-converter.h: Sprinkle virtual on some destructors.
18744 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18746 * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
18749 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18751 * audio-pulse.cpp: Another leak plugged.
18753 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18755 * debug.cpp: Fix stack traces.
18757 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18759 * audio-pulse.cpp: Add a missing unref.
18761 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18763 * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
18765 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18767 * pipeline-ui.cpp: Hush.
18769 2008-09-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
18771 * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
18774 2008-09-24 Aaron Bockover <abockover@novell.com>
18777 * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG
18778 in regards to header messages, detail messages, spacing, padding, and
18779 button layout; use a GtkDialog instead of a GtkWindow, and take all
18780 input through the dialog's response signal; require the user to explicitly
18781 tell us that they never want to see the installer again instead of
18782 assuming on cancel; fix crash when cancelling while downloading
18784 2008-09-24 Jeffrey Stedfast <fejj@novell.com>
18786 * dependencyproperty.cpp (resolve_property_path): Fixicated.
18788 2008-09-24 Sebastien Pouliot <sebastien@ximian.com>
18790 * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is
18791 given to g_file_test
18793 2008-09-24 Jeffrey Stedfast <fejj@novell.com>
18795 * dependencyproperty.cpp (resolve_property_path): Cleaned up the
18796 code, robustified, and fixed bug #429396.
18798 2008-09-24 Sebastien Pouliot <sebastien@ximian.com>
18800 * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
18804 2008-09-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
18806 * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
18807 * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
18808 pipeline-logo.cpp and made it an extern variable to avoid
18809 duplicating the entire image in the binary for every time we want
18811 * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
18812 codecs from our configuration, and always register ms codecs first
18813 in the list. NullDecoder: fix a buffer overrun and update according
18814 to pipeline-logo changes.
18815 * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
18816 to store our configuration.
18817 * media.cpp: MediaElement::MediaOpened: if any of the streams is
18818 handled by a nulldecoder, it means we don't have ms codecs
18819 installed. If so, show the codec downloader UI.
18820 * Makefile.am, src.mdp: Updated.
18822 2008-09-23 Chris Toshok <toshok@ximian.com>
18824 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18825 back out (#if false) this change for now.
18827 2008-09-23 Stephane Delcroix <sdelcroix@novell.com>
18829 * runtime.h|cpp: Surface::GetSourceLocation()
18831 2008-09-23 Sebastien Pouliot <sebastien@ximian.com>
18833 * uielement.cpp: Delete the temporary region before returning on an
18834 invisible element (common in defiwind).
18836 2008-09-22 Chris Toshok <toshok@ximian.com>
18838 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18839 another case we hadn't addressed - if the object we're merging
18840 *from* doesn't have a namescope, we iterate over the entire tree,
18841 registering names into our (possibly temporary, if it didn't exist
18842 before) namescope. Fixes firstfloorsoftware.com (bug #425268).
18844 * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
18847 2008-09-22 Jeffrey Stedfast <fejj@novell.com>
18849 * dependencyobject.cpp (merge_namescope): Return the parent_ns so
18850 that our caller doesn't have to call FindNameScope() in case it
18852 (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
18855 2008-09-22 Larry Ewing <lewing@novell.com>
18857 * geometry.cpp (Geometry::Draw): fix the transform brokeness that
18858 crept in. Fixes test-geometry-transform.xaml
18860 2008-09-22 Michael Dominic K. <mdk@mdk.am>
18864 * clock.h: 0-time animations are valid (as in: passing the timeline
18865 validation test) but do nothing. Fixes the clock11 test.
18867 2008-09-22 Michael Dominic K. <mdk@mdk.am>
18870 * animation.h: Attach storage only once. Fixes a crash in clock21.html.
18872 2008-09-19 Jeffrey Stedfast <fejj@novell.com>
18874 Fix for bug #427560
18876 * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18877 Use FindNameScope() to get the scope to merge into, and only call
18878 this once - don't re-get it ever loop.
18880 2008-09-19 Jeffrey Stedfast <fejj@novell.com>
18882 * dependencyobject.cpp (EventObject::AddXamlHandler): New method
18883 to add a handler from XAML so that we can force the listener token
18884 to be 0, like Silverlight does.
18886 2008-09-19 Michael Dominic K. <mdk@mdk.am>
18889 * animation.h: Attach the storage to the prev storage on the
18890 partuclar AnimationClock/Storage Begin, not when the parent
18891 storyboard begins. That fixes: #412074 .
18893 2008-09-19 Stephane Delcroix <sdelcroix@novell.com>
18895 * src/downloader.cpp:
18896 * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
18897 argument. Drop downloder_open method.
18899 * src/playlist.cpp:
18900 * src/deepzoomimagetilesource.cpp:
18901 * src/text.cpp: use the new Open with the corresponding policy.
18903 2008-09-19 Sebastien Pouliot <sebastien@ximian.com>
18905 * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
18906 offenders are gone now but it's still leaking in a few cases.
18908 2008-09-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
18910 * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
18911 any custom Cleanup methods (allowing the Cleanup method to free
18912 buffer if g_free isn't the way to do it).
18914 2008-09-18 Jeffrey Stedfast <fejj@novell.com>
18918 * dependencyobject.cpp (class EventLists): Init current_token to
18919 1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
18920 apps use 0 to mean that a g_signal is not connected).
18922 2008-09-18 Geoff Norton <gnorton@novell.com>
18924 * media.cpp: Stop leaking pixbuf loaders.
18926 2008-09-18 Sebastien Pouliot <sebastien@ximian.com>
18928 * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
18929 g_free-ing it later.
18931 2008-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
18933 * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
18934 RUNTIME_INIT_CODECS_DEBUG.
18935 * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
18938 2008-09-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
18940 * src.mdp: Updated.
18941 * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
18942 moonlight logo for video and plays silence for audio.
18943 * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
18944 * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
18946 * pipeline-logo.inc: Added.
18948 2008-09-17 Larry Ewing <lewing@novell.com>
18953 * frameworkelement.cpp: start filling in InvalidateArrange and
18954 InvalidateMeasure calls.
18959 * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
18960 change handling here from panel since it is a Canvas property.
18962 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18964 * pipeline.h: Remove some dead code.
18966 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18968 * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
18969 add flags to disable both ffmpeg and ms codecs and include them by
18971 * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
18972 (until it gets integrated in libmscodecs.so), and register the mp3
18973 codec. Media::Initialize: Update according to runtime init flag
18974 changes, and always register null encoders.
18976 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18978 * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
18979 delete downloaded media files.
18981 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
18983 * dependencyobject.cpp: Add TODO.
18985 2008-09-17 Jackson Harper <jackson@ximian.com>
18987 * xaml.cpp: Don't try setting the content prop in managed if there
18988 is no cdata content (we're just dealing with spaces).
18990 2008-09-17 Larry Ewing <lewing@novell.com>
18992 * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
18993 use the right index value.
18995 2008-09-17 Sebastien Pouliot <sebastien@ximian.com>
18997 * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
18998 SizeChangedEventArgs.
19000 2008-09-17 Michael Dominic K. <mdk@mdk.am>
19003 * clock.h: Separate raising events from raising completed events.
19004 In certain clock hierarchies this would cause us to emit completed event
19005 before raising animation setter events.
19007 * applier.cpp: Enabling the applier again.
19008 * applier.h: Animation resets don't have INSTANT precedence. The just
19009 have higher precedence than normal animation setters.
19011 2008-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
19013 * audio-pulse.cpp: Remove stray characters.
19015 2008-09-16 Chris Toshok <toshok@ximian.com>
19017 * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
19019 * frameworkelement.h, frameworkelement.cpp
19020 (FrameworkElement::UpdateLayout): override
19021 UIElement::UpdateLayout, and if that base class method returns
19022 true, emit LayoutUpdatedEvent.
19024 * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
19026 (UIElement::InvalidateArrange): add DirtyArrange.
19027 (UIElement::DoMeasure): this should drive the measure process -
19028 needs filling in, though.
19029 (UIElement::DoArrange): this should drive the arrange
19031 (UIElement::UpdateLayout): change return type to bool. call
19032 DoMeasure and DoArrange synchronously, and return true if we
19035 * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
19038 * cbinding.h, cbinding.cpp: regen.
19040 2008-09-16 Larry Ewing <lewing@novell.com>
19042 * clock.cpp: make AddTimeout take a priority. Make the render
19043 timeout slightly lower than default so that we process gdk events
19046 * media.cpp: raise the priority of the media timeout so that it
19047 doesn't drop below default or the render tick.
19049 2008-09-16 Chris Toshok <toshok@ximian.com>
19051 * dirty.h, dirty.cpp: add a priority queue-like setup for the
19052 dirty lists, where priority == level in the visual hierarchy.
19053 Processing the down dirty list proceeds from lower "priority" to
19054 higher, and the up dirty list proceeds from higher to lower.
19055 * runtime.h, runtime.cpp: use the new dirty lists.
19057 * uielement.h, uielement.cpp: add a visual_level field, which is
19058 updated when the element is added to the
19059 hierarchy (this->visual_level = parent->visual_level + 1).
19061 2008-09-16 Jackson Harper <jackson@ximian.com>
19063 * xaml.cpp: keys should be a property of the instance.
19065 2008-09-16 Fernando Herrera <fherrera@novell.com>
19067 * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
19068 has codecs=microsoft.
19069 * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
19070 in RUNTIME_INIT_BROWSER.
19072 2008-09-16 Jackson Harper <jackson@ximian.com>
19074 * xaml.cpp: Move cdata handling code into the content property
19075 setters, allow managed content property setters to set values from
19078 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
19080 * audio-pulse.cpp: dlsym another method previously forgotten.
19082 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
19084 * multiscaleimage.h, textbox.h: Use quotes to include our headers.
19086 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
19088 * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
19089 don't link with alsa anymore
19091 2008-09-16 Jb Evain <jbevain@novell.com>
19093 * template.h (TemplateBinding): decorate with a SLVersion=2.
19095 2008-09-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
19097 * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
19098 link with pulseaudio anymore. Hopefully fixes #425560.
19100 2008-09-16 Fernando Herrera <fherrera@novell.com>
19102 * asf/asf-structures.h:
19106 * pipeline.h: Don't use relative paths in #includes.
19107 * Makefile.am: Add -Iasf
19109 2008-09-15 Michael Dominic K. <mdk@mdk.am>
19111 * src/applier.cpp: Disabling the applier for now, it seems there are still
19112 some tiny 'issues' with it.
19114 2008-09-15 Chris Toshok <toshok@ximian.com>
19116 * dependencyobject.h, dependencyobject.cpp: add real
19117 PropertyChange callbacks (so we can implement listeners without
19118 the listener being a dependencyobject - which is nice for
19119 TemplateBindings, which don't need all that overhead.)
19121 * template.h, template.cpp: switch over to using this new listener
19124 2008-09-15 Chris Toshok <toshok@ximian.com>
19126 * xaml.cpp (dependency_object_set_attributes): add the
19127 TemplateBinding to the item, not the containing template.
19129 2008-09-15 Larry Ewing <lewing@novell.com>
19131 * applier.h: really disable the applier to make changes instant,
19132 fixes page turn and the test regressions.
19134 * applier.cpp: ref and unref the object to avoid crashes on
19137 2008-09-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
19139 * src.mdp: Updated with new files.
19141 2008-09-12 Larry Ewing <lewing@novell.com>
19143 * grid.cpp (Grid::Measure): accumulate colspan width and pass
19144 pixel size restrictions on to the children.
19146 2008-09-11 Michael Dominic K. <mdk@mdk.am>
19150 * applier.h: Adding some defines for applier precedences + a way
19151 to instant apply with precedence == 0.
19153 2008-09-10 Michael Dominic K. <mdk@mdk.am>
19155 * clock.cpp: Properly emit the Completed event after the properties have
19158 2008-09-09 Michael Dominic K. <mdk@mdk.am>
19161 * applier.cpp: Removing debug messages, adding proper free code.
19163 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19167 * applier.cpp: Do not set the values, instead move them to applier.
19169 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19175 * runtime.h: Moving the Applier instance to TimeManager.
19177 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19180 * runtime.h: Adding Applier to Surface.
19182 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19185 * applier.h: Adding a basic Flush method, totally bad for now.
19187 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19190 * applier.h: Adding basic Apply function that applies all the changes
19193 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19196 * applier.h: Adding basic method to add property to apply on object.
19198 2008-09-08 Michael Dominic K. <mdk@mdk.am>
19202 * applier.h: Introducing the applier helper class. Will be used
19203 to apply property changes in order.
19205 2008-09-11 Jackson Harper <jackson@ximian.com>
19207 * xaml.cpp: Move some of the content property setting logic into
19208 the XamlElementInstance's.
19210 2008-09-11 Stephane Delcroix <sdelcroix@novell.com>
19212 * multiscaleimage.cpp: draw a pattern that should look like
19213 a MSI (currently still wrong)
19215 2008-09-10 Jeffrey Stedfast <fejj@novell.com>
19217 * text.h (class Run): Apparently Run's TextProperty is internal in
19220 2008-09-10 Larry Ewing <lewing@novell.com>
19223 * frameworkelement.cpp:
19224 * shape.cpp, shape.h:
19225 * canvas.cpp: update to pass the new more extensive tests.
19227 2008-09-10 Larry Ewing <lewing@novell.com>
19229 * size.h: Tweak to match updated tests.
19231 2008-09-09 Chris Toshok <toshok@ximian.com>
19233 * style.h (class Setter): make ValueProperty's PropertyType
19234 'object' instead of 'Managed'.
19236 * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
19237 little more bulletproof.
19238 (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
19239 NULL, don't create a TemplateBindingNode (and add it to the list)
19242 * type.h.in (class Type): remove OBJECT - it gets autogenerated
19245 * xaml.cpp (start_element): we need to set inst->parent before
19246 setting the attributes, as the attributes might include a
19247 StaticResource (or TemplateBinding) that requires us to walk back
19249 (XamlElementInfoNative::CreateElementInstance): create a
19250 XamlElementInstanceTemplate if the type is a subclass of
19252 (dependency_object_set_attributes): return out of this after
19253 adding the templatebinding (so we don't end up in the managed xaml
19254 loader code trying to set properties to "{TemplateBinding ...}"
19255 Also, if the property type is OBJECT, call into the loader (like
19256 we do with MANAGED), and fix the logic check on
19257 p->loader->SetAttribute in that case.
19259 * type.h, type-generated.cpp: regen.
19261 2008-09-09 Sebastien Pouliot <sebastien@ximian.com>
19263 * xaml.cpp: Don't unref NULL collections. Fix regression when
19264 parsing invalid points (or doubles).
19266 2008-09-08 Chris Toshok <toshok@ximian.com>
19268 * xaml.h, xaml.cpp: stopgap before jackson gets the completely
19269 managed approach to managed object parsing going. a few key
19272 1) xaml_load_managed_object takes an out bool
19273 parameter (is_dependency_object) so the managed code can create
19274 non-DO subclasses, and then the parser will pass that GCHandle
19275 back to managed code in set_attribute.
19277 2) added an add_child callback to the loader so that managed DO
19278 subclasses (and non-subclasses) can deal with collection
19279 properties. theres no ContentProperty handled in managed code,
19282 2008-09-08 Geoff Norton <gnorton@novell.com>
19284 * audio-*.(cpp|h): The Alsa code requires us to join the play
19285 thread before we remove the audio sources otherwise we can
19286 end up in a race accessing closed pcm's when shutting down.
19288 2008-09-08 Geoff Norton <gnorton@novell.com>
19290 * audio.cpp: Ensure that we dont enter an infinite loop before
19291 we actually start playing a source.
19293 2008-09-08 Larry Ewing <lewing@novell.com>
19295 * frameworkelement.cpp: make things 1.0 safe.
19297 2008-09-08 Larry Ewing <lewing@novell.com>
19299 * frameworkelement.cpp (FrameworkElement::Arrange): rework to
19300 match some of the Measure logic
19303 * canvas.cpp, canvas.h:
19304 * control.cpp, control.h: rework arrange implementation to match
19305 the measure logic and the current thinking on arrange.
19307 * uielement.cpp, uielement.h: expose render_size accessor.
19309 2009-09-08 Stephane Delcroix <sdelcroix@novell.com>
19311 * tilesource.h|cpp: keep the source and tiles info on the c++ side
19313 * multiscaleimage.cpp: draw a cairo pattern instead of nothing
19315 2008-09-08 Larry Ewing <lewing@novell.com>
19317 * grid.cpp: Chain collection changed up properly.
19319 2008-09-07 Larry Ewing <lewing@novell.com>
19321 * thickness.h (struct Thickness): add +/-/- to thickness to clean
19322 up some of the other code.
19324 * rect.h: remove ShrinkBy now that we can negate thickness
19326 * size.h: clean things and make GrowBy stop at 0 now that we can
19327 deal with thickness addition outside of things.
19330 * frameworkelement.cpp:
19332 * border.cpp: subtract the padding and border thickness from
19333 available size before passing it to children. Handle some corner
19334 cases in measure with ugly hacks.
19336 2008-09-07 Larry Ewing <lewing@novell.com>
19338 * canvas.cpp, canvas.h:
19339 * control.cpp, control.h:
19342 * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
19345 * frameworkelement.cpp: Make measure pre and post condition the
19346 output rather than doing it in the overrides themselves.
19348 * size.h: make sure min/max will never set a known size to NAN.
19350 2008-09-07 Chris Toshok <toshok@ximian.com>
19352 * type.h.in: add OBJECT kind.
19354 * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
19356 2008-09-06 Chris Toshok <toshok@ximian.com>
19358 * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
19359 - instead use 'Foo foo(args)'. the former creates 2 objects to
19362 * media.cpp (MediaElement::GetValue): same.
19364 * uielement.cpp: same.
19366 * error.h, error.cpp (class MoonError): make this a class instead
19367 of a struct, add a default ctor, remove Dispose and use ~MoonError
19368 instead, add FillIn methods that take a "code" as well as an
19369 ErrorType to support the parser.
19371 * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
19372 rid of GError and use MonoError exclusively, move the internal
19373 EventLists/EventList types to the .cpp file. Also, remove a few
19374 redundant methods on DependencyObject. The hit at call sites is
19375 negligable (one additional line, perhaps), and the call sites are
19376 few and far between.
19378 * xaml.cpp (dependency_object_set_attributes)
19379 (dependency_object_set_property): call
19380 DependencyObject::SetValueWithError.
19382 * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
19383 the property here. the DO api is gone.
19385 2008-09-06 Chris Toshok <toshok@ximian.com>
19387 * grid.h, grid.cpp: flesh out some of the
19388 OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
19389 Also add in a completely broken and unfinished MeasureOverride
19390 implementation. It passes some of the tests, but not for the
19391 right reasons :) Lastly, move the GridUnitType enum to enums.h
19393 * enums.h: move GridUnitType here, and rename its elements to have
19394 a "GridUnitType" prefix.
19396 * xaml.cpp: track GridUnitType enum references.
19398 * dependencyproperty.g.cpp: fix up attached properties getters to
19399 return default values if there is one.
19401 2008-09-05 Jeffrey Stedfast <fejj@novell.com>
19403 * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
19404 actually change the lauout, so no need to set the dirty flag when
19406 (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
19408 (TextBlock::Paint): Same.
19410 2008-09-05 Larry Ewing <lewing@novell.com>
19412 * uielement.cpp: use render bounds rather than bounds to determine
19413 if we have something to draw.
19415 * stylus.h, stylus.cpp: remove the EmptyBackground method.
19417 Fixes the annotation regression in page turn (again).
19419 2008-09-04 Larry Ewing <lewing@novell.com>
19421 * uielement.h (class UIElement): generate managed accessors for
19424 2008-09-04 Chris Toshok <toshok@ximian.com>
19426 * xaml.cpp (dependency_object_add_child): add code here for
19427 FrameworkTemplate, call SetVisualTree with the child.
19429 * control.cpp (Control::Control): init bindings.
19430 (Control::~Control): unref applied_template and delete bindings.
19431 (Control::ApplyTemplate): make sure we return false here from a
19432 few error places (NULL template, a template with a NULL
19435 * template.cpp (FrameworkTemplate::FrameworkTemplate): init
19436 visual_tree to NULL.
19437 (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
19438 (FrameworkTemplate::SetVisualTree): new method, set visual_tree
19440 (ControlTemplate::DuplicateObject): we need to special case a
19441 couple of classes (collections, templates) in order to traverse
19443 (ControlTemplate::Apply): if the visual_tree is null, don't try to
19446 * template.h (class FrameworkTemplate): add SetVisualTree method
19449 2008-09-04 Larry Ewing <lewing@novell.com>
19451 * uielement.cpp, uielement.h: new methods GetSubtreeObject and
19452 ElementAdded ElementRemoved.
19454 * dependencyobject.h: remove ContentAdded, ContentRemoved.
19456 * collection.cpp, collection.h: rename ContentWalker to
19457 VisualTreeWalker use GetSubtreeObject () rather than content for walking.
19459 * template.cpp, template.h: make Apply return the newly created
19462 * panel.cpp, panel.h:
19463 * control.cpp, control.h: add template_root child that isn't
19464 hooked into the normal tree. Start implementing ApplyTemplate and
19467 * usercontrol.cpp: mess around with Content a little in making it
19468 use the ElementAdded ElementRemoved logic since UserControl
19469 doesn't really support template changes.
19471 * border.h: implement GetSubtreeObject.
19475 * frameworkelement.cpp:
19476 * canvas.cpp, canvas.h: update for new treewalker.
19478 2008-09-04 Jeffrey Stedfast <fejj@novell.com>
19480 * layout.cpp (TextLayout::Render): Added some new arguments which
19481 aren't actually used yet but will be eventually (assuming I
19482 continue with this approach).
19484 * textbox.cpp (TextBox::Paint): Don't bother painting the
19485 background, control does this for us.
19487 2008-09-04 Stephane Delcroix <sdelcroix@novell.com>
19489 * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
19490 own file, implement the downloader.
19492 2008-09-03 Chris Toshok <toshok@ximian.com>
19494 * dependencyobject.h: as much as i hate this, add
19495 GetCurrentValues() for the template stuff.
19497 * xaml.cpp: add XamlElementInstanceTemplate and initial support
19498 for TemplateBindings.
19500 * template.h, template.cpp: add a bunch of stuff for templates.
19502 * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
19503 watch for template property changes, and apply the template in
19504 OnLoaded (or if we're already loaded). Also, add accessors for
19507 * dependencyproperty.g.cpp: regen.
19509 2008-09-03 Larry Ewing <lewing@novell.com>
19511 * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
19512 the new Size methods.
19514 * border.cpp, border.h: add some initial (broken) rendering
19515 support, rework measure to use some of the new rect and size
19518 2008-09-03 Jeffrey Stedfast <fejj@novell.com>
19520 * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
19521 property chanegs, no need to re-layout or invalidate - according
19522 to my little test program, Silverlight 2 Beta 2 does not change
19523 the rendered text when this property changes - any newlines in the
19524 input text stay there.
19526 2008-09-03 Sebastien Pouliot <sebastien@ximian.com>
19528 * resources.cpp: (ContainsKey) Don't crash if a null key is
19529 supplied. (Remove) same. (Add) same.
19531 2008-09-03 Jeffrey Stedfast <fejj@novell.com>
19533 * enums.cpp (initialize_enums): Map Horizontal and
19534 VerticalScrollBarVisibility properly.
19536 * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
19537 think we need this for TextBox controls since their
19538 ActualWidth/Height aren't based on the text extents afaik.
19539 (TextBox::Paint): Implemented, sorta.
19541 2008-09-03 Chris Toshok <toshok@ximian.com>
19543 * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
19546 2008-09-03 Larry Ewing <lewing@novell.com>
19548 * uielement.cpp, uielement.h:
19549 (UIElement::FrontToBack): Make FrontToBack non-virtual and move
19550 the generic logic here.
19552 * control.cpp, control.h:
19553 * panel.cpp, panel.h: Remove ftb logic, everything is handled in
19556 2008-09-03 Larry Ewing <lewing@novell.com>
19558 * uielement.cpp, uielement.h:
19559 * media.cpp, media.h:
19560 * panel.cpp, panel.h:
19561 * shape.cpp, shape.h: Add GetCoverageBounds virtual method
19562 to let elements compute their own opaque coverage.
19564 2008-09-03 Stephane Delcroix <sdelcroix@novell.com>
19566 * multiscaleimage.h|.cpp: new MultiScaleImage type
19568 2008-09-02 Chris Toshok <toshok@ximian.com>
19570 * resources.h, resources.cpp: constify this.
19571 (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
19574 * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
19576 (dependency_object_set_attributes): add support for StaticResource
19577 lookups. going to refactor all this to add support for
19580 2008-09-02 Jeffrey Stedfast <fejj@novell.com>
19582 * eventargs.h (class CollectionChangedEventArgs): Implemented
19583 accessor methods to get/set the event arg values.
19585 * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
19586 strdup the event_name string and also updated to use an accessor
19587 method to prevent a possible NULL dereference.
19589 2008-09-02 Michael Dominic K. <mdk@mdk.am>
19592 * animation2.h: Reworking the animation hookup storage fix. Checking for
19593 subclass is plain dumb. Just make an exception for ObjectAnimation.
19595 2008-09-02 Michael Dominic K. <mdk@mdk.am>
19597 * animation.cpp: Fixing a problem in animation hookup
19598 storage -- the type/kind that the animation generates has to be the subclass
19599 of the type/kind the target property is ready to accept.
19601 2008-09-01 Stephane Delcroix <sdelcroix@novell.com>
19603 * multiscalesubimage.h: fixing code generation decorators
19605 2008-09-01 Stephane Delcroix <sdelcroix@novell.com>
19607 * multiscalesubimage.h: new type
19609 2008-08-29 Jeffrey Stedfast <fejj@novell.com>
19611 * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
19612 end so that we can fall back to that position as the line
19613 width (we don't want to include trailing spaces unless
19615 (TextLayout::Render): If the line width is greater than the
19616 allowable width, keep the line left-aligned like Silverlight does.
19618 2008-08-29 Chris Toshok <toshok@ximian.com>
19620 * resources.cpp (ResourceDictionary::Clear): call
19621 Collection::Clear after we've cleared the hash so the hash will be
19622 empty in event handlers.
19624 2008-08-29 Jeffrey Stedfast <fejj@novell.com>
19626 * layout.cpp (TextLayout::Layout): Do a slightly better job of
19627 keeping track of line->width - still not 100% correct.
19629 2008-08-28 Chris Toshok <toshok@ximian.com>
19631 * Makefile.am: add resources.h and resources.cpp
19633 * xaml.cpp (class XamlElementInfo): add x:Key field (since this
19634 can't set a field on the object -- it might be a value type).
19635 (class XamlElementInstanceValueType): remove the empty
19636 implementation of SetAttributes. we'll define it later.
19637 (XNamespace::SetAttribute): handle name/key behavior here. Only
19638 allow one of them to be set on an object. Also, only attempt to
19639 set DependencyObject::NameProperty on an item if it's not a value
19641 (start_element): don't add value type children to their parent in
19642 start_element (as we haven't read the data that will allow us to
19643 create the value typed object.) we need to push this off to the
19644 end_element handler. also return early if there are problems
19645 setting attributes.
19646 (end_element_handler): if we're creating a value typed ELEMENT,
19647 add the child to the parent here.
19648 (dependency_object_add_child): add some ResourceDictionary
19649 validation here (if there's no key, etc), and actually call
19650 dict->Add(key, child).
19651 (XamlElementInstanceNative::CreateItem): don't crash if we failed
19652 to create an item. (fixes one of the crashes caused by the
19653 ResourceDictionaryTests - ParseDouble)
19654 (XamlElementInstanceValueType::SetAttributes): call
19655 value_type_set_attributes.
19656 (value_type_set_attributes): stripped down version of
19657 dependency_object_set_attributes, as there are only a handful (is
19658 it really only x:Name and x:Key?) attributes we handle on value
19660 (globally): always call set_parent as opposed to
19661 ->SetLogicalParent. we might not be dealing with a DO-subclass.
19663 * xaml.h (class XamlLoader): remove the explicit C api calls
19664 xaml_create_from_file, xaml_create_from_str, and
19665 xaml_hydrate_from_str. Replace them with instance methods on
19666 XamlLoader (CreateFromFile, CreateFromString, and
19667 HydrateFromString, respectively) Add WithError variants of the
19668 these, and have the generator generate bindings for them so we can
19669 throw parse exceptions into managed code.
19671 * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
19673 * value.h.in (struct Value): add Is overload with
19676 * uielement.h: include resources.h.
19678 * collection.h, collection.cpp: change the api in a few ways to
19679 make ResourceDictionary easier to write - make Count virtual,
19680 remove all the type checks for element type from methods, and add
19681 that check to Collection::CanAdd. ResourceDictionary overrides
19682 that and always returns true. Make Clear return a bool.
19684 * animation.h, animation.cpp: track collection changes.
19686 * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
19687 implementations to the .cpp file.
19689 * resources.h, resources.cpp: split out the code for
19690 ResourceDictionary here. ResourceDictionary is an odd fish. In
19691 1.0 land, it provides the same api as a collection, and things can
19692 be looked up by name via findName. In 2.0 land, items in
19693 ResourceDictionaries have to have either an x:Key or x:Name
19694 attribute. If both are lacking it's an error. If the former is
19695 specified you can only get at it through Resources["name"]. If
19696 the latter is specified, you can use both Resources["name"] or
19699 * dependencyobject.cpp, dependencyobject.h: add Is and GetType
19700 overloads that take additional_types. Make IsValueValid take an
19701 additional_types parameter too. Expose ClearValue to managed code
19702 so we can actually clear the Value* to null without using
19703 the (unsupported from the generator) old method of passing
19704 IntPtr.Zero (Value* now maps to "ref Value" in generated
19705 pinvokes.) Lastly add a SetValueWithError method so we can throw
19706 exceptions in managed code.
19708 * border.h: add defaults for Padding and BorderThickness.
19710 * border.cpp: simplify things a bit since we don't have to worry
19711 about padding/border thickness being NULL.
19713 * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
19715 2008-08-28 Jeffrey Stedfast <fejj@novell.com>
19717 * layout.cpp (TextLayout::Render): Respect TextAlignment.
19719 2008-08-26 Chris Toshok <toshok@ximian.com>
19721 * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
19722 rid of this g_assert, it's crashing the moon-unit tests. just
19724 (DependencyObject::SetSurface): don't do anything if the surface
19725 is already set to the same value.
19727 * animation.cpp (Storyboard::SetSurface): don't do anything if
19728 GetSurface() == surface.
19730 * text.cpp (Glyphs::SetSurface): same.
19732 * uielement.cpp (UIElement::SetSurface): same.
19734 * brush.cpp (ImageBrush::SetSurface): same.
19738 * collection.cpp (DependencyObjectCollection::SetSurface): same.
19739 (Collection::RemoveAtWithError): this (against logic) raises
19740 ArgumentException, not ArgumentOutOfRangeException.
19742 2008-08-25 Chris Toshok <toshok@ximian.com>
19744 * rect.h, rect.cpp: rename the w/h fields to width/height, since
19745 every other instance of similar fields are named that.
19747 * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
19748 uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
19749 brush.cpp: track rect change.
19751 2008-08-25 Chris Toshok <toshok@ximian.com>
19753 * border.h, border.cpp: implement ArrangeOverride, and fix up some
19754 test failures in MeasureOverride.
19756 * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
19757 also set the desired size here (to the final size we get from
19760 2008-08-25 Michael Dominic K. <mdk@mdk.am>
19762 * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
19763 proper kinds of values (TYPE::DEPENDENCY_OBJECT).
19765 2008-08-25 Michael Dominic K. <mdk@mdk.am>
19768 * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
19769 Also adding validation methods.
19771 2008-08-25 Michael Dominic K. <mdk@mdk.am>
19774 * animation2.h: Base work for ObjectAnimationUsingKeyFrames
19777 2008-08-24 Geoff Norton <gnorton@novell.com>
19779 * media.h: Add a new overload to set the SourceProperty from managed land.
19780 * media.cpp: Support async source changing downloader creation for ImageSource
19781 * cbinding.(cpp|h): Regen
19783 2008-08-23 Geoff Norton <gnorton@novell.com>
19785 * mplayer.cpp: Only ref the audio if we have it as well.
19787 2008-08-23 Geoff Norton <gnorton@novell.com>
19789 * bitmapimage.h: Add to the build
19791 2008-08-23 Geoff Norton <gnorton@novell.com>
19793 * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
19794 type.h, value.h: Regenerated
19795 * downloader.cpp|h: Return failure state for downloader->GetResponse
19796 * runtime.h: Generate C bindings for IsMainThread.
19798 2008-08-23 Larry Ewing <lewing@novell.com>
19800 * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
19801 properties. Move the quadratic generation into
19802 GenerateQuadratics.
19804 Regenrate and remove the managed wrappers.
19806 2008-08-23 Larry Ewing <lewing@novell.com>
19808 * xaml.cpp (value_from_str): fixed crossed commits with Auto
19811 * collection.cpp (ContentWalker::Step): add some debug logic to
19812 protect against an error case for now.
19814 2008-08-23 Chris Toshok <toshok@ximian.com>
19816 * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
19818 * thickness.h, thickness.cpp: rename thickness_from_str to
19819 Thickness::FromStr, and make it return a bool instead of a
19820 pointer, as Point and Rect do.
19822 * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
19824 * xaml.cpp (value_from_str): use the CornerRadius parsing method,
19825 and track the change to the Thickness one.
19827 2008-08-23 Larry Ewing <lewing@novell.com>
19829 * xaml.cpp (value_from_str): quick auto hack so we can test
19832 * runtime.cpp (RenderNode::Render): fix typo in merge
19834 2008-08-23 Larry Ewing <lewing@novell.com>
19836 * uielement.cpp, uielement.h: move basic ftb logic here from
19837 panel. Start storing extents allong with bounds.
19839 * panel.cpp, panel.h: move most ftb logic to uielement.cpp. Use
19842 * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
19843 to uielement in front_to_back mode unconditionaly.
19845 * runtime.cpp, runtime.h: make RenderNode members private and move
19846 the ftb override logic here and out of the PostRender call.
19848 * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
19851 * control.cpp, control.h: implement basic functionality.
19853 2008-08-22 Chris Toshok <toshok@ximian.com>
19855 * color.h, rect.h, point.h: remove the copy ctors. we don't need
19856 them, and they were causing crashes (!)
19858 2008-08-22 Chris Toshok <toshok@ximian.com>
19860 * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
19861 take the margins into account, even when we're childless.
19863 * panel.h, panel.cpp: add MeasureOverride which always returns
19866 * border.h (class Border): add property accessors for everything.
19868 * border.cpp (Border::MeasureOverride): new implementation.
19870 * value.h.in, value.cpp: add CornerRadius support, and remove the
19871 unnecessary casts (and in the Rect/Point cases, calls to the copy
19874 * value.h, dependencyproperty.g.cpp: regenerate.
19876 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19878 * textbox.h (class SelectionChangedEventArgs): Added
19879 Text/SelectionChangedEventArgs.
19881 2008-08-22 Chris Toshok <toshok@ximian.com>
19883 * frameworkelement.cpp (FrameworkElement::Measure): instead of
19884 always calling MeasureOverride here, we call the registered manage
19885 callback if there is one. So, we proxy into managed code here,
19886 invoke the virtual method FWE.MeasureOverride, and if there's no
19887 subclass override (or if it chains up for some reason), we end up
19888 in MeasureOverride by virtue of the pinvoke in
19889 FrameworkElement.cs.
19890 (FrameworkElement::MeasureOverride): move all the logic for the
19891 default MeasureOverride implementation here. it's pretty
19892 braindead - takes margins into account, measures our child, makes
19893 sure our size is between Min/Max. That's about it.
19894 (FrameworkElement::Arrange): same drill as ::Measure.
19895 (FrameworkElement::ArrangeOverride): still (incorrectly) return
19898 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19900 * textbox.h: Made ArrangeOverride() virtual and added
19901 SelectionChangedEvent.
19903 2008-08-22 Chris Toshok <toshok@ximian.com>
19905 * dependencyobject.cpp (DependencyObject::GetContent): guard
19906 against the value being NULL.
19908 2008-08-22 Larry Ewing <lewing@novell.com>
19910 * collection.cpp (ContentWalker::ContentWalker): make
19911 ContentWalker understand directions (Logical, ZForward, ZReverse).
19913 2008-08-22 Larry Ewing <lewing@novell.com>
19915 * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
19916 when drawing in the image backend.
19918 2008-08-22 Chris Toshok <toshok@ximian.com>
19920 * frameworkelement.h, frameworkelement.cpp: add in the layout foo
19921 - provide implementations of Measure and Arrange that just call
19922 MeasureOverride and ArrangeOverride. These are virtual and meant
19923 to be overridden either in unmanaged code (by simply overriding
19924 them), or in managed code (RegisterManagedOverrides is called in
19925 FWE.Initialize.) Decorate the class with @CallInitialize so the
19926 managed ctor calls it.
19928 * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
19929 ctor, and add the layout methods. Measure and Arrange are pure
19932 * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
19934 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19936 * textbox.cpp (TextBox::Layout): Implemented rough layout.
19938 * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
19940 2008-08-22 Jeffrey Stedfast <fejj@novell.com>
19942 * textbox.cpp (TextBox::ArrangeOverride): Added.
19944 * frameworkelement.h (class FrameworkElement): Changed default
19945 Width/Height values to NAN.
19947 * textbox.cpp: Initial implementation of TextBox, Layout and
19948 Rendering logic still missing.
19950 2008-08-22 Larry Ewing <lewing@novell.com>
19952 * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
19955 2008-08-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
19957 * audio-alsa.cpp: Call Underflowed () when we run out of data.
19959 2008-08-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
19961 * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
19962 VideoEnded and AudioEnded states. Implement handling of VideoEnded
19963 state, and call MediaElement::MediaEnded when both states have been
19965 * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
19966 all media finished (both video and audio) logic there.
19968 2008-08-21 Larry Ewing <lewing@novell.com>
19970 * uielement.cpp (UIElement::ComputeLocalTransform): clean up
19971 accumulated transform logic. Keep the parent TransformFor out of
19972 the local_transform.
19974 2008-08-21 Larry Ewing <lewing@novell.com>
19976 * uielement.cpp (UIElement::Dispose): add logic removed from
19979 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19982 2008-08-21 Chris Toshok <toshok@ximian.com>
19984 [ fixes annotations not showing up in pageturn due to a NULL
19985 background on the ink presenter ]
19987 * stylus.h, stylus.cpp (class InkPresenter): add an override of
19988 EmptyBackground(). If we have a non-empty stroke bounding
19989 rectangle, return false. Otherwise fall back to
19990 Panel::EmptyBackground.
19992 * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
19993 method. the panel implementation returns true if GetBackground()
19994 returns NULL. Use this virtual method instead of an explicit
19995 GetBackground() call in Panel::FrontToBack.
19997 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
19999 * enums.cpp: Added ScrollBarVisibility enum
20001 * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
20002 invalidate if the TextWrappingProperty changes too.
20004 2008-08-21 Chris Toshok <toshok@ximian.com>
20006 * border.h, border.cpp, cornerradius.h: add new
20009 * Makefile.am: add border/cornerradius to the file list.
20011 * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
20012 dependencyproperty.g.cpp: regen.
20014 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
20016 * textbox.h (class TextBox): The TextBox namespace should be
20017 System.Windows.Controls
20019 * stackpanel.h (class StackPanel): #include panel.h
20021 2008-08-21 Jeffrey Stedfast <fejj@novell.com>
20023 * textbox.h: Initial implementation of the TextBox class (just
20026 * value.h.in (struct Value): Don't use int32_t or uint64_t,
20027 etc. Be consistent and use the glib types.
20029 * layout.cpp (TextLayout::Layout): Fixed
20030 LineStackingStrategy/LineHeight issues. If we are using
20031 BlockLineHeight & the specified LineHeight is not Auto, then we
20032 need to use 0.0 as the descender.
20034 2008-08-21 Chris Toshok <toshok@ximian.com>
20036 * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
20037 accessors to all the subclasses. They're autogenerated from the
20038 respective class's DP's.
20040 * animation2.h: same.
20042 * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
20044 * control.h (class Control): add some more GenerateAccessors.
20046 * control.cpp: and remove the manual implementations here.
20048 * dependencyproperty.g.cpp: regen.
20050 2008-08-21 Larry Ewing <lewing@novell.com>
20052 * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
20055 * xaml.cpp (value_from_str): unref the collections we create after
20058 2008-08-21 Jackson Harper <jackson@ximian.com>
20060 * xaml.cpp: Can't rely on the type for getting a managed element's
20061 name, we have to pull it from the element name provided to the
20064 2008-08-21 Chris Toshok <toshok@ximian.com>
20066 * dependencyobject.cpp (DependencyObject::HasProperty): pass
20067 additional_types to IsSubclassOf.
20069 * type.h, type.cpp: add IsSubclassOf variants that take
20070 additional_types. Fixes lookup problems of non-custom DP's on
20071 managed subclasses.
20073 2008-08-21 Chris Toshok <toshok@ximian.com>
20075 * value.h.in (struct Value): make all single arg primitive value
20076 typed ctors "explicit" so c++ won't do any magic implicit
20077 conversion from value type to Value.
20081 * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
20082 Value()'s explicitly.
20084 * collection.cpp (DoubleCollection::FromStr): same.
20086 2008-08-20 Larry Ewing <lewing@novell.com>
20088 * dependencyobject.cpp (create_temp_namescope): don't leak the
20089 temporary namescope we create. Also don't create it over and over
20092 2008-08-20 Larry Ewing <lewing@novell.com>
20094 * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
20095 virtual methods so that we can begin to simplify content rules.
20097 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
20098 GetContent to handle the children in a generic way.
20100 * uielement.cpp|h: start moving generic uielement content logic
20101 here. Implement OnLoaded and deal with content directly.
20103 * canvas.cpp|h: remove obsolete methods. Move most of zindex
20104 property logic from panel to here.
20106 * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
20109 * control.cpp|h: generate accessors, start remove OnLoaded and
20112 * dependencyproperty.g.cpp: regen.
20114 2008-08-20 Chris Toshok <toshok@ximian.com>
20116 * text.cpp, text.h: generate accessors for Glyph properties.
20118 * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
20119 shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
20120 xaml.cpp: make another pass through files switching to C++
20121 accessors from GetValue(FooClass::FooProperty)->AsFoo().
20123 * dependencyproperty.g.cpp: regen.
20125 2008-08-20 Chris Toshok <toshok@ximian.com>
20127 * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
20128 canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
20129 frameworkelement.cpp, frameworkelement.h, geometry.cpp,
20130 geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
20131 namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
20132 shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
20133 text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
20134 uielement.h, xap.cpp, xap.h:
20136 mostly, decorate almost all DependencyProperties with
20137 @GenerateAccessors, add in lots of new ones that weren't present
20138 before (to the .h), and remove all those implementations from
20141 Also, don't use #if SL_2_0 in the headers. we can't depend on
20142 that being defined (especially once we install). Any
20143 2.0-specific behavior needs to be done in the .cpp files. There
20144 are still a few things that are wrong wrt
20145 this (dependencyproperty.g.cpp needs to define the DP's
20146 regardless of version, they can just be NULL in the 1.0 case for
20147 2.0 properties, for instance.)
20149 * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
20151 2008-08-20 Chris Toshok <toshok@ximian.com>
20153 * uielement.h (ClearLoaded): use &=, not |=, here. fixes tests.
20155 2008-08-20 Jeffrey Stedfast <fejj@novell.com>
20157 * layout.cpp (TextLayout::Layout): Updated to take a
20158 TextLayoutHints argument for providing hints like text alignment
20159 and line stacking/height.
20161 * text.cpp (class TextBlock): Updated a bit for Silverlight
20162 2.0. All of the properties added in 2.0 are now there, although
20163 only 2 of them are respected at the moment (line stacking strategy
20166 * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
20168 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20170 * audio.cpp: NULL out the player instance after deleting it.
20172 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20174 * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
20175 called and if so, do nothing.
20177 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20179 * audio.cpp: We only support 1 or 2 channels for the moment.
20181 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20183 * media.cpp, media.h: Fix buffering progress to take into account that
20184 the first pts isn't necessarily 0 (happens for live media).
20186 2008-08-20 Chris Toshok <toshok@ximian.com>
20188 * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
20189 Focus events on click in a 1.0 context.
20191 2008-08-20 Jackson Harper <jackson@ximian.com>
20193 * xaml.cpp|h: Setting properties requires the xaml namespace so it
20194 can lookup managed types. TODO: It also needs the default
20195 assembly, but I am thinking of moving that to the loader.
20197 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20199 * mplayer.cpp: Properly ref/unref the AudioSource.
20201 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20203 * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
20205 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20207 * media.cpp, media.h, runtime.cpp: Remove media_init, just make
20208 runtime_init call Media::Initialize directly.
20210 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20212 * media.h, media.cpp: Remove media_element_advance_frame from header,
20213 no need to make it public.
20215 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20217 * mplayer.cpp: AdvanceFrame: only return true if we actually processed
20218 any frames. SeekCallback: clear the queue of audio frames as well.
20219 * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
20220 Don't change previous_position while we're seeking, and don't make
20222 * audio.cpp, audio.h: Added AudioSource::ClearFrames.
20224 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20226 * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
20228 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20230 * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
20233 2008-08-20 Stephane Delcroix <sdelcroix@novell.com>
20235 * canvas.h, canvas.cpp:
20236 * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
20237 from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
20239 * panel.cpp, collection.cpp: related changes.
20241 2008-08-20 Stephane Delcroix <sdelcroix@novell.com>
20243 * uielement.h: change the generator instructions so the
20244 NameProperty is generated in FrameworkElement.
20246 2008-08-19 Chris Toshok <toshok@ximian.com>
20248 * dependencyobject.h,
20249 dependencyobject.cpp (DependencyObject::GetContent): ripped this
20250 out of a hack, should prove useful for the work coming up.
20252 2008-08-19 Chris Toshok <toshok@ximian.com>
20254 * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
20256 2008-08-19 Chris Toshok <toshok@ximian.com>
20258 * control.h, control.cpp (class Control): generate a binding for
20259 Control::InitializeFromXaml and drop the 2 manual C bindings.
20261 * cbinding.h, cbinding.cpp: regen.
20263 2008-08-19 Chris Toshok <toshok@ximian.com>
20265 * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
20266 autogenerate our binding for it.
20268 * cbinding.h, cbinding.cpp: regen.
20270 2008-08-19 Chris Toshok <toshok@ximian.com>
20272 * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
20273 real class, and remove the implementation of
20274 keyboard_get_modifiers. instead, provide a c++ method (both a
20275 getter and setter) and annotate the Getter with
20276 GenerateCBinding/GeneratePInvoke.
20278 * collection.h, collection.cpp: reorder the class decls (why do
20279 people put private first?) and make CollectionIterator a real
20280 class, with annotated methods. Also, move
20281 double_collection_from_str and point_collection_from_str to
20282 DoubleCollection::FromStr and PointCollection::FromStr
20283 respectively. move double_garray_from_str out of here (to
20286 * utils.h, utils.cpp: new (hopefully last) home for
20287 double_garray_from_str.
20289 * point.h, point.cpp (struct Point): rename point_from_str to
20290 Point::FromStr. no reason to have a C method for that.
20292 * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
20294 * window-gtk.h (class MoonWindowGtk): mark the ctor and
20295 GetWidget() with GenerateCBinding/GeneratePInvoke.
20297 * window-gtk.cpp: and remove their implementations.
20299 * xaml.cpp: convert over to all the new ::FromStr methods.
20301 * thickness.cpp: track new home of double_garray_from_str.
20303 * cbinding.h, cbinding.cpp: regen.
20305 2008-08-19 Chris Toshok <toshok@ximian.com>
20307 * uielement.h, uielement.cpp: make almost all data
20308 private/protected. Add a couple of methods to aid in
20309 this (IsLoaded, ClearLoaded, TransformPoint). Get rid of the
20310 cbinding for transform_point - it's never used. Also, re-order
20311 the header to put public things first, then protected then
20314 * runtime.cpp: use IsLoaded.
20316 * panel.cpp: use ClearLoaded.
20318 * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
20321 2008-08-19 Chris Toshok <toshok@ximian.com>
20323 * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
20324 lists, as we will almost always have identical lists. compare the
20325 head of the new list to focused_element to determine if focus
20328 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20330 * pipeline.cpp: Beautify error messages.
20332 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20334 * media.cpp: test-inexistent-media(s) were failing due to ISP's
20335 tendency to return search pages for failed dns lookups. Fixed tests
20336 after testing with sane DNS settings and did the appropiate change
20337 in code (raise correct error message/number).
20339 2008-08-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
20341 * runtime.h: Make RUNTIME_INIT values sequential.
20343 2008-08-19 Chris Toshok <toshok@ximian.com>
20345 * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
20346 of the object before parsing so that objects don't switch from the
20347 loader's surface to NULL as they're added to the hierarchy while
20350 2008-08-19 Larry Ewing <lewing@novell.com>
20352 * shape.cpp (Shape::InsideObject): check the extents first, then
20353 reorder the stroke/fill tests to test for the most likely first.
20355 Helps speed up sliverlight.net/world a bit.
20357 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20359 * mplayer.h, pipeline.h: No need to surround GetTypeName with
20360 OBJECT_TRACKING anymore.
20362 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20364 * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
20365 audio-pulse.h: Added, our new audio abstraction/implementation.
20366 * Makefile.am, src.mdp, type-generated.cpp: Updated.
20367 * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
20368 * runtime.cpp, runtime.h: Add runtime overrides for audio.
20370 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
20372 * xap.cpp (xap_unpack): Fixed compiler warning.
20374 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20376 * media.cpp: Include headers mplayer.h doesn't include anymore.
20377 MediaElement::SetMedia: only set audio data on the MediaPlayer if
20378 the media has audio. TImelineMarkerCollection::Add: don't call the
20379 base class' Add, call base's Insert instead. Fixes a stack overflow
20380 since base class' Add calls Insert, which TimelineMarkerCollection
20381 overrides to call Add.
20383 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20385 * enums.cpp: Wrap 2.0-only code in SL_2_0.
20387 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
20389 * zip/unzip.c: Get rid of unused variable.
20391 * value.cpp (Value::ToString): Get rid of unused variable.
20393 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20395 * dependencyobject.h: EventObject::ref: print a stack trace before the
20396 abort if we can, and fix typo in the abort message.
20398 2008-08-19 Geoff Norton <gnorton@novell.com>
20400 * xap.cpp: Ensure we can actually enter the directory we're creating.
20402 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
20404 * mplayer.cpp: Silence the compile warning.
20406 * color.cpp (color_from_str): Got rid of unused variable.
20408 * xaml.cpp (dependency_object_set_attributes): Don't need to use
20409 strlen(str) == 0 to figure out if the string is empty, just check
20411 (wrap_type): Removed. Doesn't seem to be used any longer.
20412 (get_type_for_property_name): Same.
20413 (panel_add_child): Same.
20414 (dependency_object_set_property): Made static.
20415 (dependency_object_set_attributes): Same.
20416 (dependency_object_hookup_event): Same.
20417 (dependency_object_missed_property): Same.
20419 * dependencyproperty.cpp (resolve_property_path): Use proper
20420 integer types and avoid calling strlen if all we care to know is
20421 if the string is empty.
20423 * runtime.cpp (Surface::Paint): Get rid of an annoying debug
20425 (Surface::HandleMouseEvent): Removed unused variable.
20427 2008-08-19 Chris Toshok <toshok@ximian.com>
20429 * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
20430 robust - handle Type.Event notation, making sure that the type is
20431 valid for the target.
20433 2008-08-19 Larry Ewing <lewing@novell.com>
20435 * runtime.cpp|h: add override to use sofware fallbacks for
20438 2008-08-19 Chris Toshok <toshok@ximian.com>
20440 * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
20441 1.0 and 2.0 cases. big oops.
20443 2008-08-19 Jeffrey Stedfast <fejj@novell.com>
20445 * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
20446 of a warning that is no longer valid.
20448 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20450 * downloader.h, downloader.cpp: Add a request field to
20451 DownloaderResponse, and a response field to DownloaderRequest. When
20452 a request is aborted, also abort the response. This fixes a crash
20453 when we aborted the request before receiving a response, the
20454 response had no idea the request had been aborted (since the
20455 request didn't store the response after creating it, it couldn't
20456 notify the response of the abort), and happily accessed deleted
20459 2008-08-18 Chris Toshok <toshok@ximian.com>
20461 * runtime.cpp (Surface::CreateArgsForEvent): new method, create
20462 the right kind of args for a given event. we should probably
20464 (Surface::EmitEventOnList): use CreateArgsForEvent. Only create
20465 one instance of the event args that we use to bubble along the
20466 element list. If it's a RoutedEventArgs subclass, set the source
20467 to be the first element in the list, and check the "Handled"
20468 attribute after every emit to see if we should finish early (this
20469 provides for 2.0 semantics).
20470 (Surface::FocusElement): unfortunately the event generation is
20471 async, so add a tick call if we need to. if we already have a
20472 tick call (meaning >= 1 focus change has happened already in this
20473 tick), we drop the intervening change(s). This is likely wrong.
20474 (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
20475 the proper element lists.
20476 (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
20477 silverlight2 (and we have a focused element), emit the event on
20478 the list of elements from the focused element back up to the root.
20479 Otherwise just emit it on the toplevel.
20481 * runtime.h (class Surface): add GetFocusedElement/FocusElement
20482 methods, which are used to implement
20483 FocusManager.GetFocusElement() and Control.Focus().
20485 * uielement.h, uielement.cpp (class UIElement): remove a bunch of
20486 Emit$Event() methods that were never used.
20488 * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
20489 not just "Loaded". there are parsing rules that we can't make use
20490 of here, so more work will likely have to happen in the parser.
20492 * trigger.h (class EventTrigger): add registered_event_id.
20494 * cbinding.h, cbinding.cpp: regenerate.
20496 2008-08-18 Geoff Norton <gnorton@novell.com>
20498 * type-generated.cpp, cbinding.cpp|h: Rengerated
20499 * dependencyobject.h: Bind DependencyObject .ctor
20501 2008-08-18 Geoff Norton <gnorton@novell.com>
20503 * deployment.h: Move CrossDomainAccess to
20504 * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
20505 can specify values from the enum.
20507 2008-08-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
20509 * cbinding.cpp, cbinding.h, uielement.h: Mark
20510 UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
20512 2008-08-18 Larry Ewing <lewing@novell.com>
20514 * panel.cpp|h: remove SetSurface override, the
20515 DependencyObjectCollection::SetSurface does the work already.
20517 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
20519 * uielement.cpp: Autogenerate more of the bindings, make
20520 desired_size private, etc.
20522 2008-08-18 Geoff Norton <gnorton@novell.com>
20524 * eventargs.cpp|h: Change the return type to int, fix the build.
20526 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
20528 * uielement.cpp (uielement_get_surface): Removed.
20529 (uielement_invalidate): Removed.
20530 (uielement_set_transform_origin): Removed.
20532 * transform.cpp: Removed manual c-bindings.
20534 * text.cpp: Removed manual c-bindings for property accessors.
20536 2008-08-18 Geoff Norton <gnorton@novell.com>
20538 * type-generated.cpp, cbinding.cpp|h: Rengerated
20539 * uielement.cpp|h, type.h, value.h: Keyboard->Key
20540 * runtime.cpp|h: Move key translation to eventargs, and pass the
20541 raw GdkEventKey to KeyEventArgs.
20542 * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
20543 and remove the old KeyboardEventArgs.
20545 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
20547 * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
20549 * size.cpp: Removed manual ctor c-binding.
20551 * shape.cpp: Removed manual c-bindings for property accessors.
20553 2008-08-18 Geoff Norton <gnorton@novell.com>
20555 * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
20556 from managed Streams.
20558 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
20560 * runtime.cpp: Removed manual c-bindings for Surface and renamed
20561 Get/SetTrans() to Get/SetTransparent().
20563 * panel.cpp: Removed manual c-bindings for property accessors.
20565 * media.cpp: Removed manual c-bindings for property accessors and
20566 other methods that are now autogenerated.
20568 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
20570 * dependencyobject.h: Make the generator happy.
20572 2008-08-18 Jeffrey Stedfast <fejj@novell.com>
20574 * geometry.cpp: Removed manual c-bindings for property accessors.
20576 2008-08-18 Michael Dominic K. <mdk@mdk.am>
20578 * runtime.h: Caller is "in main thread" also when the main_thread
20579 pointer equals NULL (no surface has been created).
20581 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
20583 * debug.cpp: Fix a leak found by valgrind.
20585 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
20587 * dependencyobject.h: Make GetTypeName virtual if we're tracking
20588 objects, enables better output of lost objects.
20590 2008-08-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
20592 * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
20593 more objects to be enqueued for unref, loop until there are none
20596 2008-08-17 Geoff Norton <gnorton@novell.com>
20598 * downloader.cpp|h: Add a method for DownloaderResponse to
20599 support a Header Visitor.
20601 2008-08-17 Geoff Norton <gnorton@novell.com>
20603 * uielement.h: Expose desired_size as public to fix the build.
20605 2008-08-17 Chris Toshok <toshok@ximian.com>
20607 * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
20609 2008-08-17 Chris Toshok <toshok@ximian.com>
20611 * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
20612 INCLUDE_MANAGED_CODE.
20614 2008-08-15 Larry Ewing <lewing@novell.com>
20616 * clock.cpp|h: add methods Jeff removed back.
20618 2008-08-15 Chris Toshok <toshok@ximian.com>
20620 * stylus.h (class DrawingAttributes): all managed DP fields are
20622 (class Stroke): DrawingAttributesProperty and StylusPointsProperty
20623 are private in managed-land.
20625 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20627 * grid.h: Autogenerate bindings for GetActualWidth/Height
20629 * grid.cpp: Removed manual c-bindings.
20631 * frameworkelement.cpp: Removed manual c-bindings.
20633 2008-08-15 Chris Toshok <toshok@ximian.com>
20635 * eventargs.h (enum CollectionChangedAction): change Reset to
20636 Cleared, and add Clearing to handle the old functionality in
20637 DependencyObject::OnCollectionClear.
20639 * dependencyobject.h (class DependencyObject): remove
20640 OnCollectionClear. we handle that case in OnCollectionChanged
20643 * panel.h, panel.cpp (Panel::OnCollectionChanged): move
20644 OnCollectionClear code to here.
20646 * uielement.cpp (UIElement::OnCollectionChanged): add
20647 ActionClearing code here.
20649 * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
20651 * collection.cpp (Collection::Clear): use
20652 EmitChanged (CollectionChangedActionClearing,...) instead of
20655 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20657 * eventargs.cpp|h: Same.
20659 * control.cpp: Same.
20661 * contentcontrol.cpp: Removed manual property accessor c-bindings.
20663 * clock.cpp: Removed manual c-bindings for things that can be
20666 * brush.cpp|h: Removed manual c-bindings for property accessors.
20668 * animation.cpp|h: Added some convenience c++ property accessors and
20669 got rid of all of the manual c-bindings. Fixed them to be
20672 * stylus.cpp: Added c++ property accessors and updated the code to
20673 use them (cleans up some code) and also got rid of the c binding
20674 accessors. We'll autogenerate these.
20676 2008-08-15 Sebastien Pouliot <sebastien@ximian.com>
20678 * layout.cpp: Don't add kerning before a dot (.). This match SL
20679 behavior (i.e. it's not a "sliding dot" algorithm like I expected)
20680 and the effect is visible in a few DRT (like #184).
20682 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20684 * uielement.cpp (UIElement::GetTriggers): Added for convenience.
20685 (UIElement::Dispose): Use the new convenience method.
20687 2008-08-15 Chris Toshok <toshok@ximian.com>
20689 * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
20690 (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
20692 (Panel::OnCollectionChanged): simplify this since the code moved
20693 to ChildAdded/ChildRemoved.
20695 * panel.h, panel.cpp (Panel::Dispose): loop over our children
20696 setting their visual parent to NULL.
20698 * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
20699 trigger collection removing ourselves as the target.
20700 (UIElement::OnPropertyChanged): handle TriggersProperty here -
20701 remove target from the old triggers and set target on the new
20703 (UIElement::OnCollectionChanged): new method, handle
20704 TriggersCollection.
20706 * dependencyobject.cpp: be consistent in our treatment of
20707 LogicalParent - clear it in every place we're removing a DO. Warn
20708 if we're setting it again on the same DO.
20710 * collection.h, collection.cpp: remove triggercollection's
20711 added/removedfromcollection, adn remove uielementcollection's
20712 removedfromcollection. Also, stop using a separate closure. The
20713 collection's LogicalParent always has the same value - use that.
20715 2008-08-15 Jeffrey Stedfast <fejj@novell.com>
20717 * clock.cpp (TimeManager::SourceTick): Instead of always using up
20718 to 1/30 of a second for flushing the async queue, use only the
20719 time remaining in our render pass to flush it.
20721 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20723 * animation.h: KeyTimeProperty isn't nullable in managed code.
20725 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20727 * cbinding.cpp, cbinding.h: Regenerated.
20728 * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
20729 to at least open the source.
20730 * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
20732 2008-08-15 Jackson Harper <jackson@ximian.com>
20734 * xaml.cpp: Need to advance after F.
20736 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20738 * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
20741 2008-08-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
20743 * dependencyproperty.g.cpp: Regenerated.
20745 2008-08-14 Larry Ewing <lewing@novell.com>
20747 * animation.h (class KeyFrame): remove the KeyTime DP and make
20748 the ctor private this is an abstract class.
20750 * animation.cpp: retrieve the property via name.
20752 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
20754 * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
20755 many times as we can in 1/30th of a second. Major visual
20756 performance improvement for bug #395160.
20758 2008-08-14 Jackson Harper <jackson@ximian.com>
20760 * xaml.cpp|h: We need to pass a pointer to the top level control
20761 when hooking up a managed event, the managed code uses this to
20762 find the method to invoke.
20764 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
20766 * uielement.cpp: Implemented property accessors for ZIndex
20768 * collection.cpp (UIElementZIndexComparer): Use
20769 UIElement::GetZIndex(). If, in the future, we make GetZIndex()
20770 return a cached value, now we'll automagically benefit from it.
20772 2008-08-14 Jeffrey Stedfast <fejj@novell.com>
20774 ZIndex sorting optimization for bug #395160
20776 * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
20777 over the z_sorted list, it might not yet be
20778 populated (e.g. ResortZIndex() may not have been called yet).
20779 (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
20780 new collection is non-null.
20781 (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
20782 (Panel::OnLoaded): Queue a resort here too.
20784 * collection.cpp (UIElementCollection::AddedToCollection):
20785 Removed. We don't want to do the zindex sortign here anymore. Too
20786 slow. Instead, we'll have Panel::OnCollectionChanged() set the
20787 DirtyChildrenZIndices dirty flag so that the renderer forces a
20789 (UIElementCollection::Insert): Removed, no need to override
20790 anymore since we won't be resorting by zindex here anymore.
20791 (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
20792 maintained as items are added/inserted, we need to always init the
20793 z_sorted array here even if we only have 1 item.
20795 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20797 * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
20799 * playlist.cpp: Use DependencyObject::SetName instead of the C method.
20800 * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
20801 well as Name accessors.
20802 * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
20803 * runtime.cpp: Updated according to new method names.
20805 2008-08-14 Jackson Harper <jackson@ximian.com>
20807 * xaml.cpp: We now create property instances from the property's
20808 type info not the property's parent type. This will allow us to
20809 have a managed attached property on a native object.
20811 2008-08-14 Chris Toshok <toshok@ximian.com>
20813 * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
20815 * thickness.h, thickness.cpp: add thickness_from_str.
20817 * xaml.cpp: add thickness parsing.
20819 2008-08-14 Jackson Harper <jackson@ximian.com>
20821 * xaml.cpp: Need to lookup property element name's in their
20822 namespace so that managed attached properties can be set.
20824 2008-08-14 Jackson Harper <jackson@ximian.com>
20826 * xaml.cpp: If there is a dot in the element name we can assume
20827 it's a property (or at least not an element). This should prevent
20828 some extra calls into managed code to try to create types from
20831 2008-08-13 Geoff Norton <gnorton@novell.com>
20833 * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
20834 calls into the time manager.
20836 2008-08-13 Geoff Norton <gnorton@novell.com>
20838 * runtime.cpp|h: Add a binding for g_idle_add.
20840 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20842 * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
20843 MouseEventArgs methods.
20845 2008-08-14 Jackson Harper <jackson@ximian.com>
20847 * type-generated.cpp: Value types.
20849 2008-08-13 Jackson Harper <jackson@ximian.com>
20851 * xaml.cpp: Make sure we set content properties.
20853 2008-08-13 Jackson Harper <jackson@ximian.com>
20855 * xaml.cpp: Add support for parsing value types.
20857 2008-08-13 Chris Toshok <toshok@ximian.com>
20859 * panel.cpp (Panel::OnCollectionChanged): we only need to call
20860 OnLoaded on the new child.
20862 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20864 * stylus.h: StylusInfo doesn't have a managed equivalent.
20866 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20868 * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
20869 * cbinding.cpp, cbinding.h: Regenerated.
20871 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20873 * type.cpp: Remove spew.
20874 * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
20875 we're trying to get values, not set them.
20877 2008-08-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
20879 * dependencyproperty.g.cpp: Regenerated.
20880 * geometry.h: Added IsFilled property.
20882 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20884 * brush.h: Set correct managed DP access and property types.
20886 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
20888 * *.h: Added GeneratePInvoke attribute to each ctor
20890 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
20892 * text.cpp: s/Inlines/InlineCollection/g
20894 * xaml.cpp: s/Inlines/InlineCollection/g
20896 * collection.h (class InlineCollection): Renamed from Inlines.
20898 * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
20899 and also the ctor. Needed to prevent a crash in test-props.html
20901 2008-08-13 Geoff Norton <gnorton@novell.com>
20903 * runtime.cpp|h: Reuse the old html_timer infrastructure for the
20904 intial DispatcherTimer implementation.
20906 2008-08-13 Jeffrey Stedfast <fejj@novell.com>
20908 * media.h (class MediaElement): Make MarkersProperty internal for
20911 * grid.h (class Grid): Make Column/RowDefinitionsProperties
20912 internal for managed-side.
20914 * text.h (class TextBlock): Make InlinesProperty internal for
20917 * panel.h (class Panel): Update ChildrenProperty managed property
20920 Also added newlines to the end of some files to silence compile
20923 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20925 * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
20926 cbinding.cpp, cbinding.h: Regenerated.
20927 * geometry.h: Annotation fix.
20928 * Makefile.am, src.mdp: Added tilesource.h
20929 * tilesource.h: Added.
20931 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20933 * src.mdp, Makefile.am: Added animation2.h
20934 * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
20935 dependencyproperty.g.cpp: Regenerated.
20936 * animation.h: Added missing 2.0 DPs and more annotations.
20937 * animation2.h: Added, contains 2.0 animation classes.
20938 * clock.h: There are no managed equivalent of TimelineGroup and
20939 ParallelTimeline, remove their Namespace annotation.
20941 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20943 * shape.h: Fix warning.
20945 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20947 * shape.h: The managed Shape class must be constructable, so make all
20948 pure virtual methods from the native Shape class just virtual.
20949 * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
20951 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20953 * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
20954 dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
20955 text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
20956 annotations to make gui-compare happier.
20958 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20960 * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
20961 style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
20964 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20966 * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
20967 dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
20968 type-generated.cpp, value.h: Added a native StackPanel class and
20969 generate the managed StackPanel.
20971 2008-08-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
20973 * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
20974 namescope.h, stylus.h, transform.h: Tweak some annotations.
20976 2008-08-12 Chris Toshok <toshok@ximian.com>
20978 * style.h (class Style): make the "Setters DP" field private.
20980 * template.h (class ControlTemplate): add TargetType DP
20982 * dependencyproperty.g.cpp: regen.
20984 2008-08-12 Chris Toshok <toshok@ximian.com>
20986 * style.h (class Setter): hack for the DependencyProperty valued
20987 property. we need to parse a string DP name in a context where we
20988 don't know the type to apply to it, so we need to have a string
20991 * dependencyproperty.g.cpp: regen.
20993 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20995 * collection.h: Annotate Collection.
20997 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
20999 * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
21000 size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
21002 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21004 * src.mdp: Updated.
21006 2008-08-12 Chris Toshok <toshok@ximian.com>
21008 * collection.cpp (Collection::Clear): make a temporary copy of the
21009 array so we can zero out the ptrarray before calling
21010 RemovedFromCollection.
21012 2008-08-12 Jackson Harper <jackson@ximian.com>
21015 * xaml.cpp: Hydrate now passes in the default assembly name and
21016 path (we can probably do away with path's I think that's just a
21017 holdover from 1.1). If no assembly name is specified in the
21018 custom xmlns, the default's are used.
21020 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21022 * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
21023 style.h, uielement.h, grid.h, media.h: Tweaked annotations to
21024 support managed DP accessor generation.
21026 2008-08-12 Jeffrey Stedfast <fejj@novell.com>
21028 * collection.cpp (Collection::SetCount): Convenience function.
21029 (Collection::Clear): Use SetCount().
21030 (Collection::Insert): Same.
21031 (Collection::RemoveAt): Same.
21033 * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
21034 parent class rather than base class - while the
21035 DependencyObjectCollection might not currently override Add/Insert
21036 methods, if at some later point overrides are added, then we need
21037 to do no work here.
21039 * collection.cpp (DependencyObjectCollection::SetValueAt):
21040 Removed (not used anywhere).
21041 (Collection::SetValueAtWithError): This needs to call
21042 SetValueAt(), not GetValueAt().
21043 (Collection::SetValueAt): Delete the removed Value after emitting
21044 the event so we don't leak it.
21046 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21048 * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
21049 deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
21050 trigger.h, uielement.h: Use string instead of char* as
21053 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21055 * animation.h, brush.h, canvas.h, clock.h, collection.h,
21056 contentcontrol.h, control.h, dependencyobject.h, deployment.h,
21057 downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
21058 namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
21059 transform.h, trigger.h, uielement.h, usercontrol.h: Added
21060 @Namespace annotations, and changed @PropertyType which were
21061 declared as gint32 (and are enums) to use the actual enum type.
21062 * dependencyproperty.g.cpp: Updated.
21064 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21066 * src.mdp: Updated.
21068 2008-08-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
21070 * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
21071 DependencyProperty to the Kind enum.
21073 2008-08-11 Chris Toshok <toshok@ximian.com>
21075 * deployment.h (class Application): add ResourceProperty.
21077 * style.h: add ValueProperty.
21079 * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
21080 after adding the Version=2.0 stuff to the collection api.
21082 * dependencyproperty.g.cpp: regen.
21084 2008-08-11 Chris Toshok <toshok@ximian.com>
21086 * error.h, error.cpp: add an enum to MoonError that lets us
21087 specify which exception to raise.
21089 * collection.h, collection.cpp: a few changes:
21091 1. make most methods take Value* now instead of Value, to ease the
21092 autogenerated bindings. Leave in Add/Remove taking (Value v) so
21093 we can let c++ do some implicit conversion lifting for us. Leave
21094 the (Value) variants as non-virtual, and make the Value* ones
21097 2. Make ::Add call ::Insert, instead of duplicating all the code.
21099 3. Move all calls of AddedToCollection and RemovedFromCollection
21100 to *after* the work has been done (they're past-tense, so do what
21101 their name implies.) This means subclasses can assume the item is
21102 already in the array (or removed from it) when those methods are
21103 called. The one holdout to this utopian ideal is Clear(). we
21106 4. Switch from overriding GetValue to handle CountProperty (and
21107 leaking a Value* every time we get it) to setting the
21108 CountProperty whenever we need to (in Insert/RemoveAt).
21110 5. Add special GetValueAtWithError, SetValueAtWithError, and
21111 RemoveAtWithError methods, that allow us to effectively raise
21112 exceptions from the unmanaged code. Use the new
21113 MoonError::ErrorKind enum to specify which exception.
21115 6. remove a bunch of C api, which is now autogenerated.
21117 * dependencyproperty.g.cpp (dependency_property_g_init): regen to
21118 pick up Collection::CountProperty's default value.
21120 * cbinding.h, cbinding.cpp: autogen'ed collection api.
21122 * stylus.h, media.h, media.cpp: track collection changes.
21124 * dependencyobject.cpp: track MoonError enum change.
21126 2008-08-11 Chris Toshok <toshok@ximian.com>
21128 * dependencyproperty.g.cpp: regen.
21130 * control.h (class Control): add StyleProperty.
21132 2008-08-11 Sebastien Pouliot <sebastien@ximian.com>
21134 * layout.cpp: Compute line's height with more precision. This
21135 removes the cumulative difference (over multiple lines) with
21136 Silverlight implementation. Fix DRT#209 (enough to PASS) and
21137 improve several other ones (already passing but imperfect).
21139 2008-08-11 Chris Toshok <toshok@ximian.com>
21141 * style.h: comment out 2 problematic DP's for now.
21143 * dependencyproperty.g.cpp: regen
21145 2008-08-11 Chris Toshok <toshok@ximian.com>
21147 * style.h, style.cpp: add Style, SetterBase, Setter, and
21148 SetterBaseCollection unmanaged types.
21150 * Makefile.am: add them to the 2.0 build.
21152 * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
21153 dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
21155 2008-08-11 Jeffrey Stedfast <fejj@novell.com>
21157 * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
21159 (Polygon::OnCollectionChanged): Same.
21161 * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
21162 the TextDecorationsProperty changes too. Fixes the "underline
21163 hyperlinks" portion of bug #412986.
21165 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
21167 * xaml.cpp: Remove debug spew.
21169 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
21171 * array.cpp, array.h: Removed, no longer needed.
21172 * collection.cpp, collection.h: Moved double_garray_from_str to
21174 * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
21175 shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
21176 xaml.cpp: Remove the double and point arrays, no longer needed.
21177 * type-generated.cpp: Remove the double and point arrays, no longer
21178 needed. Implement support for 2.0 events.
21180 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
21182 * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
21185 2008-08-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
21187 * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
21189 2008-08-09 Jeffrey Stedfast <fejj@novell.com>
21191 * *.h: Removed *_new() prototypes which are autogenerated in
21194 2008-08-08 Chris Toshok <toshok@ximian.com>
21196 * template.h, template.cpp: new file, stub implementations for
21197 FrameworkTemplate and ControlTemplate.
21199 * Makefile.am: add template.h/cpp.
21201 * control.h: add Template property.
21203 * frameworkelement.h: add some 2.0 events.
21205 * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
21206 value.h, type-generated.cpp: regenerate.
21208 2008-08-08 Chris Toshok <toshok@ximian.com>
21210 * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
21211 parser around in various methods (starting from the public
21212 xaml_set_property_from_str and value_from_str*) in order to get it
21213 down to where it's needed for the enum_* calls.
21215 * enums.h, enums.cpp: add a "sl2" argument so we can resolve
21216 sl1/sl2 specific enum values, and add the 2.0 specific
21217 Horizontal/VerticalAlignment mappings.
21219 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
21221 * runtime.cpp: Remove comments to self :)
21223 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
21225 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21226 control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
21227 canvas.cpp, transform.h, downloader.cpp, transform.cpp,
21228 animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
21229 control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
21230 clock.cpp, uielement.h, collection.h, geometry.h,
21231 contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
21232 collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
21233 frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
21234 namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
21235 registration from *_init methods, and remove *_init methods which
21236 turned out to be empty after that.
21238 2008-08-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
21240 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21241 control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
21242 canvas.cpp, transform.h, downloader.cpp, transform.cpp,
21243 animation.h, grid.cpp, downloader.h, shape.h,
21244 dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
21245 control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
21246 Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
21247 clock.cpp, uielement.h, collection.h, geometry.h,
21248 contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
21249 grid.h, collection.cpp, geometry.cpp, shape.cpp,
21250 dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
21251 brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
21252 usercontrol.h: Generate dependency property registration.
21254 2008-08-07 Chris Toshok <toshok@ximian.com>
21256 * collection.h, collection.cpp (double_collection_from_str): new
21258 (point_collection_from_str): new method.
21260 * xaml.cpp (value_from_str): add support for
21261 DoubleCollection/PointCollection properties. leave
21262 DoubleArray/PointArray in for now, although nothing should use it.
21264 * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
21265 PointArray/DoubleArray properties to using
21266 PointCollection/DoubleCollection. This is unfortunately a
21267 necessity due to the 2.0 changes, but it should be transparent for
21270 2008-08-07 Larry Ewing <lewing@novell.com>
21272 * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
21273 on ShiftPosition interaction with the shape cache to fix the
21274 droppings we were seeing in AnimationMatrix and
21275 StoryBoard_ModifyProperty.htm.
21277 2008-08-07 Geoff Norton <gnorton@novell.com>
21279 * media.cpp: When the MediaElement source changes set the
21280 BufferingProgress back to 0 otherwise we may never emit a
21281 BufferingProgressChangedEvent for the new source.
21283 2008-08-07 Sebastien Pouliot <sebastien@ximian.com>
21285 * layout.cpp: Handle negative horiBearingX correctly. This gives
21286 better visual results in DRT #47 (same width value, up to 2
21287 decimal) and #209 (not enough to make it PASS but I doubt the
21288 master is ok, since I can't duplicate its output).
21290 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
21292 * dependencyobject.cpp: HasProperty: accept attached properties for
21295 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
21297 * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21298 control.h, deployment.h, text.h, thickness.h, trigger.cpp,
21299 canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
21300 transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
21301 shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
21302 text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
21303 point.h, collection.h, geometry.h, contentcontrol.cpp,
21304 frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
21305 geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
21306 rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
21307 instructions to generate c constructors in headers and remove *_new
21308 implementations from cpp files.
21309 * dependencyobject.h: Typedef function pointer to avoid making the
21310 generator understand function pointer syntax. Update comments to
21312 * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
21313 * type.h, type.h.in: Updated comments to new syntax.
21314 * mms-downloader.h: Use C++ syntax.
21315 * dependencyproperty.h, dependencyproperty.cpp: Make
21316 dependency_property_register_managed_property a method on the type
21317 and update comments to new syntax.
21318 * type-generated.cpp: Updated by new generator, which did actually
21319 catch a few errors.
21321 2008-08-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
21323 * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
21326 2008-08-06 Geoff Norton <gnorton@novell.com>
21328 * dependencyproperty.cpp: When registering a clashing DP
21329 return the original so that the code can act on it as it
21330 expects. Fixes about 18 DRT regressions.
21332 2008-08-06 Chris Toshok <toshok@ximian.com>
21334 * uielement.h, uielement.cpp: add GetTransformToUIElement, the
21335 unmanaged equivalent to the managed UIElement.TransformToVisual.
21337 Also change the signature of HitTest to take a Point, not two
21338 doubles. Add a HitTest overload that takes a Rect in
21339 preparation for 2.0.
21341 * panel.h, panel.cpp: track HitTest signature change.
21343 * control.h, control.cpp: track HitTest signature change.
21345 2008-08-06 Chris Toshok <toshok@ximian.com>
21347 * transform.h, transform.cpp: add a convenience ctor for Matrix
21348 that takes a cairo_matrix_t*.
21350 2008-08-06 Chris Toshok <toshok@ximian.com>
21352 * type-generated.cpp (type_infos): fix ctors for UIElement and
21353 UIElementCollection.
21355 2008-08-06 Chris Toshok <toshok@ximian.com>
21357 * frameworkelement.h, frameworkelement.cpp: add
21358 DataContextProperty.
21360 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
21362 * type.cpp: Fix for old glib in sled.
21364 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
21366 * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
21367 type-generated.cpp: Add custom properties to a GSList instead of
21368 the hash table given that several custom properties can be
21369 registered on the same type with the same name.
21371 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
21373 * src.mdp: Make src and plugin projects build.
21375 2008-08-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
21377 * src.mdp: Updated.
21379 2008-08-05 Chris Toshok <toshok@ximian.com>
21381 * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
21382 superclass of Transform, and move all the current Transform stuff
21385 * type.h, type-generated.cpp, value.h: resync
21387 2008-08-05 Chris Toshok <toshok@ximian.com>
21389 * uielement.h, uielement.cpp, frameworkelement.h,
21390 frameworkelement.cpp: move the UIElement DPs back - the move to
21391 FrameworkElement breaks tests.
21393 * collection.cpp (TriggerCollection::AddedToCollection): quiet
21395 (TriggerCollection::RemovedFromCollection): same.
21397 2008-08-05 Chris Toshok <toshok@ximian.com>
21399 * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
21400 DependencyProperties. we need a way to limit access to these to
21403 * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
21404 TagProperty, TriggersProperty are moved to
21405 frameworkelement.h/.cpp.
21407 * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
21408 moved from UIElement to FrameworkElement.
21410 * size.h, size.cpp: add SizeChangedEventArgs.
21412 * thickness.h: move this type here
21414 * control.h: #include thickness.h
21416 * type.h, value.h, type-generated.cpp: regenerate for
21417 SIZECHANGEDEVENTARGS.
21419 2008-08-05 Chris Toshok <toshok@ximian.com>
21421 * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
21423 * enums.h: add comment about keeping MouseCursors enum in sync
21426 * enums.cpp: make all the mappings use symbols instead of integer
21427 constants. Also, rename enums.c to enums.cpp so it can include
21428 the .h files for enums not in enums.h.
21430 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
21432 * src.mdp: Remove visual.cpp|h from here too.
21434 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
21436 * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
21437 type-generated.cpp, uielement.cpp, uielement.h, value.h,
21438 visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
21439 libmoon.h: Deleted Visual (moved content into UIElement), and
21440 renamed VisualCollection to UIElementCollection.
21442 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
21444 * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
21445 GetValueWithError: Add a parameter to specify the exact type
21446 (including managed subclassing) of the object. HasProperty: use
21447 that parameter to determine if the type has the specified property
21449 * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
21450 a is_custom field to determine if the property is our own or not.
21452 2008-08-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
21454 * cbinding.cpp, cbinding.h: Updated.
21455 * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
21456 dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
21457 type.h.in, type-generated.cpp: Create a Types class which may
21458 contain additional types. Change the DP/DO/Type overloads
21459 containing a Surface to take a Types argument instead.
21461 2008-08-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
21463 * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
21465 2008-08-04 Michael Dominic K. <mdk@mdk.am>
21469 * clock.h: Adding method to store a manual target (instead of a named target)
21470 for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
21472 2008-08-04 Michael Dominic K. <mdk@mdk.am>
21475 * animation.h: A little bit of C API for KeySpline.
21477 2008-08-04 Michael Dominic K. <mdk@mdk.am>
21479 * runtime.cpp: _get_surface can only be called from the main thread.
21481 2008-08-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
21483 * src.mdp, cbinding.h, cbinding.cpp: Updated.
21484 * Makefile.am: Include error.cpp.
21485 * error.h, error.cpp: Added MoonError.
21486 * dependencyproperty.h: Make RegisterFull 2.0 only.
21487 * dependencyobject.h, dependencyobject.cpp: Added and implemented
21488 Get[[No]Default]ValueWithError and a HasProperty method which takes
21489 into account properties registered on a surface.
21491 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
21493 * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
21494 * media.cpp: Use property accessors instead of GetValue.
21496 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
21498 * cbinding.cpp, cbinding.h: Update.
21499 * dependencyproperty.cpp: RegisterFull: Only wrap method code in
21500 SL_2_0, fixed 1.0 build.
21502 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
21504 * dependencyproperty.h: Make GetName return a const char*, and rename
21505 parameters from readonly to read_only (to not conflict with C#
21508 2008-08-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
21510 * src.mdp: Updated.
21511 * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
21512 DependencyProperty's C methods.
21513 * cbinding.cpp, cbinding.h: Added.
21514 * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
21515 moon/generators, and add methodgen to generate pinvokes, and cgen
21516 to generate c bindings.
21518 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
21520 * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
21521 Implement property changed callbacks.
21523 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
21525 * contentcontrol.h, control.h: Fix includes.
21527 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
21529 * pipeline-ffmpeg.cpp: Fix warning.
21531 2008-08-01 Jeffrey Stedfast <fejj@novell.com>
21533 * dependencyobject.cpp (EventObject::Dispose): Call
21535 (EventObject::unref): Don't call SetSurface() here anymore.
21537 2008-08-01 Michael Dominic K. <mdk@mdk.am>
21539 * runtime.cpp|h: Adding few utility functions to modify the flags
21540 at runtime -- provided that there are no surfaces currently
21541 present. Would be nice to be able to somehow do it before calling
21544 2008-08-01 Michael Dominic K. <mdk@mdk.am>
21546 * runtime.cpp|h: Adding an expose handoff custom
21547 function that can be set on surface. It's called just after
21548 render_cb when something has been updated on the screen.
21550 2008-08-01 Michael Dominic K. <mdk@mdk.am>
21552 * runtime.cpp|h: Adding a global surface list and an
21553 ability to access it. I have a bad feeling we need some locking
21554 in the _get_surface_list function.
21556 2008-08-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
21558 * src.mdp: Updated.
21560 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
21562 This is the proper fix for bug #412443
21564 * visual.cpp (VisualCollection::Dispose): Implement Dispose()
21566 (VisualCollection::RemovedFromCollection): Now that we know we are
21567 disposing, we can unset VisualParent here instead of in our
21568 dtor/Dispose() method, saving us from having to interate over our
21571 * collection.cpp (Collection::Dispose): Implement a Dispose()
21572 method which does what the dtor used to do.
21574 * dependencyobject.cpp (EventObject::unref): Call Dispose() just
21575 before deleting the object.
21577 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
21579 * dependencyobject.cpp (struct Listener): Comment out the listener
21580 reffing from previous commit. I don't think this is correct.
21582 * visual.cpp (VisualCollection): Set z_sorted to NULL after
21583 freeing it so that parent class dtor calling
21584 RemovedFromCollection() will not poke at free'd memory.
21586 2008-07-31 Geoff Norton <gnorton@novell.com>
21588 * Makefile.am: Undo part of the recent Makefile changes as they broke
21591 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
21595 * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
21597 (DependencyObject::RemovePropertyChangeListener): Unref the listener.
21599 2008-07-31 Jeffrey Stedfast <fejj@novell.com>
21601 * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
21602 this needs to chain up to
21603 DependencyObjectCollection::RemovedFromCollection() rather than
21604 AddedToCollection(). Duh.
21606 2008-07-30 Jeffrey Stedfast <fejj@novell.com>
21608 * contentcontrol.cpp|h: Added.
21610 * enums.h: Moved some font/text enums here from font.h
21612 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
21614 * dependencyproperty.cpp: Fix build.
21616 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
21618 * runtime.cpp: Fix 1.0 build.
21620 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
21622 * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
21623 type.cpp, type.h, type.h.in, typegen/typegen.cs,
21624 type-generated.cpp: Store DependencyProperties in the Type* instead
21625 of a hashtable keyed on the kind.
21627 2008-07-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
21629 * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
21630 given that since we might not have access to the surface where the
21631 type was registered, it's not possible to do any type checking
21632 * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
21633 Implement registration of managed properties on a surface.
21634 * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
21635 types registered on a surface, added a Type::MANAGED enum value.
21636 * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
21639 2008-07-29 Jeffrey Stedfast <fejj@novell.com>
21641 * text.cpp (inline_new): Added.
21643 2008-07-29 Jackson Harper <jackson@ximian.com>
21645 * xaml.cpp: Add a set_parent call, I need to do some fanagling
21646 there so collection items don't have their parents set.
21647 - Managed items that are being hydrated or created using x:Class
21648 need to get content properties from the managed world.
21650 2008-07-28 Chris Toshok <toshok@ximian.com>
21652 * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
21653 type-generated.cpp: Add Size foo.
21655 2008-07-28 Jeffrey Stedfast <fejj@novell.com>
21657 * value.cpp (Value::FreeValue): Oops, free Thickness.
21659 2008-07-28 Chris Toshok <toshok@ximian.com>
21661 * control.h (struct Thickness): reorder fields to match managed
21664 2008-07-28 Jeffrey Stedfast <fejj@novell.com>
21666 * typegen/typegen.cs: Added Thickness.
21668 * value.h.in, type.h.in: Added Thickness.
21670 * value.cpp: Implemented Thickness value ctor/etc.
21672 * enums.h: Added more 2.0-specific enums.
21674 * control.cpp|h: Implemented property accessors/bindings and
21677 2008-07-28 Michael Dominic K. <mdk@mdk.am>
21679 * animation.cpp: When starting an SB that has been started already make sure to
21680 remove the Completed handler before the teardown. Fixes #405518.
21682 2008-07-28 Chris Toshok <toshok@ximian.com>
21684 * collection.cpp (collection_iterator_next): move the check for
21685 index-in-range to after the increment of it. that way managed
21686 code doesn't step off the end of the list.
21688 2008-07-26 Chris Toshok <toshok@ximian.com>
21690 * eventargs.h, eventargs.cpp: some 2.0 event stuff. Make the
21691 MouseEventArgs and KeyboardEventArgs classes subclasses of a new
21692 class - RoutedEventArgs. Also, add a "Handled" field to both
21693 MouseEventArgs and KeyboardEventArgs. Lastly add a "Keyboard"
21694 class to map to the 2.0 static Keyboard class. it exposes nothing
21695 but a Modifiers property, which isn't updated at present, but will
21696 be by the Surface code (in the key event handler).
21698 * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
21701 2008-07-26 Chris Toshok <toshok@ximian.com>
21703 * enums.h (enum ModifierKey): 2.0 specific enum for use by the
21706 2008-07-26 Jackson Harper <jackson@ximian.com>
21708 * xaml.cpp: If there isn't a managed content property, try looking
21709 for an unmanaged one.
21711 2008-07-26 Jackson Harper <jackson@ximian.com>
21713 * xaml.h|cpp: Create elements for imported managed namespaces.
21715 2008-07-25 Chris Toshok <toshok@ximian.com>
21717 * runtime.h, runtime.cpp: reformat the class decl to put public:
21718 stuff first. add "bool silverlight2" to the surface ctor so we
21719 can start to use it for behavioral differences (routed event
21720 handlers, key events, focus, etc).
21722 2008-07-25 Jeffrey Stedfast <fejj@novell.com>
21724 * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
21725 multiple StrokeCollections at a time but they cannot be added to
21726 the same collection multiple times. Do not default to
21727 DependencyObjectCollection::CanAdd()'s behavior because it checks
21728 that the logical parent is unset (which will not be accurate for
21730 (StylusPointCollection): Same as StrokeCollection.
21732 * xaml.cpp (dependency_object_add_child): Set the logical parent
21733 of items to NULL before adding them to a collection.
21735 * collection.h (class Collection): Removed 'unique' field, it's
21736 not necessary afterall.
21737 (Collection::CanAdd): New virtual method to check if the value can
21738 be added to the collection (by default always returns true).
21739 (DependencyObjectCollection::CanAdd): Override CanAdd() by
21740 checking if the object being added has a logical parent. If it
21741 already has a parent, it cannot be added (this is how Silverlight
21744 * collection.cpp (Collection::Add): There's no such thing as
21745 'unique' anymore. Don't check if the value is already contained
21746 within our collection like the old code used to do, instead call
21747 our new virtual method CanAdd() to see if we can add it.
21748 (Collection::Insert): Check CanAdd().
21749 (Collection::SetValueAt): Check CanAdd().
21751 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21753 * collection.cpp (collection_add): Fixed.
21755 * collection.h: Get rid of convenience wrappers that aren't even
21756 used. Also removes the need for previous commit.
21758 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21760 * collection.h (class DependencyObjectCollection): Add virtual
21761 Add(), Clear() and Insert(). This makes it possible for subclasses
21762 to chain up if they need to override any of these.
21763 (class DoubleCollection): Same.
21764 (class PointCollection): Here too.
21766 * visual.cpp (VisualCollection::Clear): Chain up to
21767 DependencyObjectCollection::Clear() rather than
21768 Collection::Clear().
21769 (VisualCollection::Insert): Don't bother resizing the z_sorted
21770 array here, it will be done inside ResortByZIndex() anyway.
21771 (VisualCollection::Insert): Chain up to
21772 DependencyObjectCollection::Insert() rather than
21773 Collection::Insert()
21775 2008-07-24 Geoff Norton <gnorton@novell.com>
21777 * downloader.cpp: When a downloader is reused reset the completed
21778 state when we get the new Open call.
21780 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21782 * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
21784 * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21785 Unregister the NameScope the same way the old Collection::Remove()
21786 way did it. This way seems the most correct (RemoveAt() was
21787 totally broken and SetVal() doesn't seem right afterall).
21789 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21791 * collection.cpp: Added c-wrappers for creating new
21792 collections. Also changed the c-bindings for
21793 setting/adding/inserting/etc items to the collection to take
21794 Value* instead of Value. Should make it simpler for the managed
21797 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21799 * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21800 Unregister the NameScope the same way it was done in the more
21801 common case in the old code (why were there different ways?).
21803 * text.cpp (TextBlock::OnCollectionChanged): Chain up.
21804 (TextBlock::OnCollectionItemChanged): Same.
21806 * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
21807 (GradientBrush::OnCollectionItemChanged): Chain up and notify
21810 * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
21811 (GeometryGroup::OnCollectionItemChanged): Chain up and notify
21813 (PathGeometry::OnCollectionChanged): Chain up.
21814 (PathGeometry::OnCollectionItemChanged): Chain up and notify
21816 (PathFigure::OnCollectionChanged): Chain up.
21817 (PathFigure::OnCollectionItemChanged): Chain up and notify
21820 * shape.cpp (Polygon::OnCollectionChanged): Chain up.
21821 (Polygon::OnCollectionItemChanged): Same.
21822 (Polyline::OnCollectionChanged): Same.
21823 (Polyline::OnCollectionItemChanged): Same.
21825 * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
21826 call NotifyListersOfPropertyChange().
21828 * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
21829 call NotifyListersOfPropertyChange().
21831 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21833 * collection.cp|h: Reworked Collections a lot. Collection is now a
21834 generic collection of Values. Added 3 new collections:
21835 DependencyObjectCollection (which holds DO's like the old
21836 Collection class did), DoubleCollection and PointCollection.
21838 * dependencyobject.h (DependencyObject::OnCollectionChanged):
21839 Changed the way this works to reflect the managed API.
21841 *.cpp|h: Updated to reflect above changes.
21843 2008-07-24 Jeffrey Stedfast <fejj@novell.com>
21845 * utils.cpp (g_ptr_array_insert): New utility function.
21846 (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
21847 find the index where we want to add the item.
21849 2008-07-23 Chris Toshok <toshok@ximian.com>
21851 * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
21852 transform.cpp, grid.cpp, animation.cpp, text.cpp,
21853 dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
21854 geometry.cpp, shape.cpp, dependencyobject.cpp,
21855 frameworkelement.cpp, media.cpp, brush.cpp: a couple of
21856 DependencyPropertyChanges:
21858 1. switch to the Silverlight/WPF naming of the two Types.
21859 type/value_type change to owner_type/property_type.
21861 2. go all gtk-3.0, and make things private with accessors.
21863 2008-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
21865 * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
21866 dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
21867 dependencyproperty.h, deployment.cpp, downloader.cpp,
21868 frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
21869 namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
21870 text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
21871 usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
21872 GetDependencyObject from DependencyObject to DependencyProperty.
21874 2008-07-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
21876 * dependencyobject.h, dependencyproperty.h, Makefile.am,
21877 dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
21878 DependencyProperty to its own file before it grows bigger.
21880 2008-07-21 Jackson Harper <jackson@ximian.com>
21882 * xaml.cpp: Add back in the ability to create elements from
21883 managed elements using the x:Class syntax.
21885 2008-07-21 Jackson Harper <jackson@ximian.com>
21888 * type-generated.cpp: The UserControl's Content Property name is
21889 Content not ContentProperty.
21891 2008-07-21 Jeffrey Stedfast <fejj@novell.com>
21893 * collection.cpp (collection_add): Fixed to return int.
21895 2008-07-21 Jackson Harper <jackson@ximian.com>
21897 * xaml.cpp: Add support for parsing GridLength attribute values.
21899 2008-07-19 Geoff Norton <gnorton@novell.com>
21901 * mms-downloader.(cpp|h): Ensure that we always stream-select a marker
21902 stream when there is one available. Fixes drt #2.
21903 Refactor some code duplication into a utility method.
21905 2008-07-19 Jackson Harper <jackson@ximian.com>
21907 * xaml.cpp: We can't blindly assume an object has a content
21910 2008-07-19 Jackson Harper <jackson@ximian.com>
21912 * type-generated.cpp: UserControl has a content property.
21913 * value.h|.h.in|.cpp: Add GridLength to Value.
21915 2008-07-18 Geoff Norton <gnorton@novell.com>
21917 * media.cpp: Revert InitialBuffer work around as it has some unexpected
21920 2008-07-18 Geoff Norton <gnorton@novell.com>
21922 * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
21923 get a new burst from the mms server with AccelBW.
21925 2008-07-18 Geoff Norton <gnorton@novell.com>
21927 * media.cpp: If we're using a mms source we can attempt to start playing the
21928 first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
21929 Fixes c9 stream start lag.
21931 2008-07-18 Geoff Norton <gnorton@novell.com>
21933 * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
21934 our initial buffer quickly.
21936 2008-07-18 Geoff Norton <gnorton@novell.com>
21938 * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
21939 * Makefile.am: Add mp3.(cpp|h) to the build.
21940 * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
21941 together, so we need to split them up and pass them to avcodec_decode_audio2
21942 one at a time. Its also possible that we could get a partial frame, so we need
21943 to buffer that data. Fixes mms+mp3.
21945 2008-07-18 Jeffrey Stedfast <fejj@novell.com>
21947 Fix for bug #410206
21949 * text.h (TextBlock::GetBoundingHeight): Return the larger of the
21951 (TextBlock::GetBoundingWidth): Same.
21953 2008-07-18 Chris Toshok <toshok@ximian.com>
21955 * Makefile.am (libmoon_include_HEADERS): add window.h and
21957 (libmoon_la_SOURCES): add window-gtk.cpp
21959 * window.h: abstract class for windows, that surface will use to
21960 deal with window/widget level operations.
21962 * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
21965 * runtime.h, runtime.cpp: factor out all the widget stuff from
21966 this file, along with all "width" and "height" fields. now
21967 Surface knows nothing about widgets or windowless. It speaks to
21968 MoonWindow implementations instead. Add several public methods
21969 that the window implementations can call (anything HandleUI*) to
21970 communicate events back to the surface.
21972 * canvas.cpp: surface->Get{Width,Height} ==>
21973 surface->GetWindow()->Get{Width,Height}.
21975 2008-07-18 Michael Dominic K. <mdk@mdk.am>
21978 * media.cpp: Reverting prev change, different solution: process the tick calls
21979 before processing the render.
21981 2008-07-18 Michael Dominic K. <mdk@mdk.am>
21983 * media.cpp: If the downloader is already completed, don't do an extra async
21984 call when setting source. Fixes the downloader-set-source... testcase.
21986 2008-07-18 Michael Dominic K. <mdk@mdk.am>
21988 * media.cpp: Fixing a crasher in case bad parameters passed from js.
21990 2008-07-18 Jackson Harper <jackson@ximian.com>
21992 * xaml.h: New delegates and functions for the loader. We need to
21993 call back into managed code when we import a xaml namespace so
21994 that it knows which objects are available and we need a new
21995 function for creating those objects.
21997 2008-07-18 Jackson Harper <jackson@ximian.com>
21999 * usercontrol.cpp|h: Add C functions for accessing the Content
22002 2008-07-17 Jackson Harper <jackson@ximian.com>
22006 * type-generated.cpp:
22007 * deployment.cpp|h: Add an Application type. This doesnt directly
22008 map to the managed Application because it inherits from
22009 DependencyObject, but it allows us to parse Application XAML files
22010 and then we can pull the values we need.
22012 2008-07-17 Jackson Harper <jackson@ximian.com>
22014 * libmoon.h: Add usercontrol.h, I want access to this in the
22017 2008-07-17 Jackson Harper <jackson@ximian.com>
22019 * xaml.cpp: Had a backwards IsSubclassOf here causing
22020 UserControl's content property to not get set (and I imagine many
22021 other content properties).
22022 * usercontrol.h: Add the ContentProperty metadata.
22024 2008-07-17 Stephane Delcroix <sdelcroix@novell.com>
22026 * downloader.h|cpp: provide hooks for DownloadeRequest
22028 2008-07-17 Jeffrey Stedfast <fejj@novell.com>
22030 * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
22032 * runtime.cpp (surface_create_downloader): We need to actually
22033 return the downloader here or our caller will just get garbage ;-)
22035 2008-07-17 Michael Dominic K. <mdk@mdk.am>
22037 * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
22039 * runtime.h: On desktop and browser by default use idle hinting.
22041 2008-07-17 Michael Dominic K. <mdk@mdk.am>
22043 * runtime.cpp: Adding "idlehint" to moonlight overrides that will
22044 control the use of idle hint in the clocks.
22046 2008-07-17 Stephane Delcroix <sdelcroix@novell.com>
22048 * runtime.h|cpp: add surface_get_downloader
22050 2008-07-16 Larry Ewing <lewing@novell.com>
22052 * runtime.cpp: try to get the resize logic correct for all cases,
22053 including popfly, ControlState.htm and fullscreen tests.
22055 Fixes the (non)rendering issues in the popfly game creator.
22057 2008-07-16 Geoff Norton <gnorton@novell.com>
22059 * mplayer.cpp: Its possible that extremely small audio files will
22060 never fill the sound buffer enough causing us to never call snd_pcm_open.
22061 Ensure that we open the buffer to play the sound before shutting down
22064 2008-07-16 Geoff Norton <gnorton@novell.com>
22066 * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
22068 2008-07-16 Sebastien Pouliot <sebastien@ximian.com>
22070 * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be
22071 greater than Width. Fix MS DRT#184 and #208. ALso makes #206
22072 looks better (but it already passed)
22074 2008-07-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22076 * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
22077 class doesn't do anything live/mms anymore. LiveSource: removed
22078 completely, never used. Added MemoryNestedSource to wrap another
22079 MemorySource without messing with its current position pointer.
22080 MemoryQueueSource: store already parsed packets instead of
22081 MemorySources in the queue, saves a memory allocation and prevents
22082 parsing each packet twice when buffering (once for the code which
22083 determines the last available pts, and again for the normal
22084 demuxing code path).
22085 * mms-downloader.cpp: Updated to not delete asf parser, unref it
22087 * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
22088 wait a bit longer before ending up waiting for more data (which
22089 causes the MediaElement to go into buffering mode).
22090 * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
22093 2008-07-15 Larry Ewing <lewing@novell.com>
22095 * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
22096 fix a regression in the fullscreen message code.
22098 2008-07-15 Jb Evain <jbevain@novell.com>
22100 * deployment.cpp|h: start updating Deployment to sl2b2.
22102 2008-07-15 Jb Evain <jbevain@novell.com>
22104 * deployment.h: remove SupportedCulture and SupportedCultureCollection
22105 as they no longer exist.
22106 * value.h, type.h, type-generated.cpp: regenerate.
22108 2008-07-15 Jb Evain <jbevain@novell.com>
22110 * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
22112 2008-07-15 Jb Evain <jbevain@novell.com>
22114 * list.cpp: set pointers to NULL instead of 0.
22116 2008-07-14 Geoff Norton <gnorton@novell.com>
22118 * mplayer.cpp: If we've already reached the EOF in the audio stream
22119 don't keep processing GetNextBuffer. This was causing us to emit
22120 MediaEnded more than once, causing failures in the test suite.
22122 2008-07-14 Geoff Norton <gnorton@novell.com>
22124 * downloader.cpp: Change completed to check a bool instead of
22125 filename, as filename can now be set before the downloader is in fact
22128 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
22130 * media.cpp: Initialize Media with our downloader.
22131 * pipeline.cpp: Media::Open: Check if the source has ended while
22132 waiting for an asfparser. Remove print_stack_traces.
22134 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
22136 * internal-downloader.h: Add InternalDownloader::GetType to allow the
22137 derived internal downloader to tell what kind of internal
22139 * file-downloader.h: Implement InternalDownloader::GetType.
22140 * downloader.h: Make the internal downloader publicly accessible. Add a
22141 Downloader::IsAborted method.
22142 * mms-downloader.h, mms-downloader.cpp: Implement
22143 InternalDownloader::GetType. Store the ASFParser we create in the
22144 class instance, so that the pipeline can get it. No need to write
22145 the header packet to the stream anymore.
22146 * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
22147 calculation of buffering progress to take into account that the
22148 currently available pts might be before the last played pts.
22149 * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
22151 * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
22152 argument and access the internal mms downloader on that Downloader
22153 to get the asf parser. Remove Read/Seek support from
22154 MemoryQueueSource, and just add a Pop method which returns a
22155 MemorySource for the next packet in the queue. Also add support to
22156 return all the packets in the queue as an array so that the
22157 ASFParser can easily determine the last pts available.
22158 * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
22159 g_mutex. Also make TickCall take a ref to the data parameter until
22160 the tick call has been made. This also ensures that the data
22161 parameter gets unreffed correctly when the tick call is never made
22162 (such as when we skip calls due to the TimeManager getting shut
22164 * dependencyobject.cpp: Don't ref in AddTickCall anymore.
22166 2008-07-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
22168 * playlist.cpp: Fix warning.
22170 2008-07-11 Sebastien Pouliot <sebastien@ximian.com>
22172 * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead
22173 of horiAdvance since the later is rounded to an integer. FixMS
22174 DRT#45 and get better results (less differences) on many font
22177 2008-07-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
22179 * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
22181 2008-07-11 Sebastien Pouliot <sebastien@ximian.com>
22183 * font.cpp: (font_conic_to) Directly use moon_quad_curve_to
22184 instead of doing it's own second to third order calculation.
22186 2008-07-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
22188 * mplayer.cpp: Don't store target pts from audio thread if we're paused
22189 (audio thread might not have gotten the pause request yet).
22191 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22193 * pipeline.cpp: Don't Signal more than once. I have no idea why the
22194 waiting thread doesn't wake up though.
22195 * mplayer.cpp: Comment out a printf, and always break the play loop
22196 when we're doing rw access.
22198 2008-07-10 Sebastien Pouliot <sebastien@ximian.com>
22200 * geometry.cpp|h: Remove useless code for computing bounds on
22201 PathFigure (now all handled at PathGeometry level).
22203 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22205 * mplayer.cpp: Fix a couple of leaks.
22207 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22209 * pipeline.cpp: There's no need to call AudioPlayer::Initialize
22211 * runtime.cpp, runtime.h: Added
22212 RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
22213 * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
22214 addition to the already supported MMAP access mode for alsa. This
22215 also required a major refactoring to only call alsa on the audio
22216 thread due to buggy pulseaudio hanging us (and the rest of the
22217 machine) otherwise.
22219 2008-07-10 Sebastien Pouliot <sebastien@ximian.com>
22221 * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
22222 inside each type (and out of the general case).
22224 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22226 * dependencyobject.cpp: Fix leak.
22228 2008-07-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
22230 * debug.cpp: Make valgrind happy.
22232 2008-07-09 Geoff Norton <gnorton@novell.com>
22234 * media.cpp: Ensure that we clear our old loader when we set
22237 2008-07-09 Fernando Herrera <fherrera@novell.com>
22239 * pipeline.cpp: Always set MemoryQueueSource element's size
22240 based to offset+n even for live sources.
22242 2008-07-09 Jeffrey Stedfast <fejj@novell.com>
22244 Fixes for bug #406934
22246 * text.cpp (Glyphs::SetSurface): Override so that we can start
22247 downloading the font as soon as the element gets (re)attached.
22248 (Glyphs::OnPropertyChanged): If we aren't attached, set
22249 uri_changed to true so that when we are (re)attached, we can start
22252 * media.cpp (MediaBase::MediaBase): Init new state variable
22253 'source_changed' to false.
22254 (MediaBase::SetSurface): If source_changed and we are being
22255 attached to a surface, initiate a download.
22256 (MediaBase::SetSource): Set source_changed to false.
22257 (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
22259 (MediaElement::OnPropertyChanged): Don't handle SourceProperty
22260 changes anymore, let MediaBase do that for us.
22261 (Image::OnPropertyChanged): Same.
22263 2008-07-09 Geoff Norton <gnorton@novell.com>
22265 * mms-downloader.cpp: Remove the guard we had against copying
22266 random memory and provide the correct amount of data to the
22267 pipeline from each packet.
22269 2008-07-09 Geoff Norton <gnorton@novell.com>
22271 * downloader.(cpp|h): NotifyFinished is now the finished
22272 event. The filename will be set (if available) in SetFilename.
22273 * media.(cpp|h): Change to progressivly loading the image
22274 where available (fixes popfly). We still fallback to file loading
22275 for the JS downloader case for now.
22277 2008-07-09 Larry Ewing <lewing@novell.com>
22279 * runtime.cpp (Surface::motion_notify_callback): don't call
22280 get_pointer when in windowless mode, I don't think we can trust
22283 * runtime.h (class Surface): make widget public so that we can
22284 peek at it in windowless mode.
22286 2008-07-08 Sebastien Pouliot <sebastien@ximian.com>
22288 * xaml.cpp: Always do a move after closing a path. Fix DRT test
22289 #138 (even if it was passing too!) for a bad (extra) arc.
22291 2008-07-08 Larry Ewing <lewing@novell.com>
22293 * runtime.cpp, runtime.h: remove a bunch of code rot relating to
22294 temporary cairo surfaces that is no longer used.
22296 2008-07-08 Sebastien Pouliot <sebastien@ximian.com>
22298 * shape.cpp: Consider PenLineCap when computing bounds using
22299 cairo. Fix (even if it was passing) some corners in DRT test #7
22301 2008-07-08 Jeffrey Stedfast <fejj@novell.com>
22303 * xaml.h: Reorganized a bit.
22305 2008-07-07 Chris Toshok <toshok@ximian.com>
22307 * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
22308 list if they lack a visual parent (and aren't the toplevel.)
22311 2008-07-07 Larry Ewing <lewing@novell.com>
22313 * shape.cpp (Rectangle::BuildPath): handle some special case
22314 degenerates slightly differently.
22316 Fixes most of test-shape-rectangle-matrix.xaml.
22318 2008-07-07 Larry Ewing <lewing@novell.com>
22320 * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
22321 degenerates in drawing, use the workaround there too.
22323 Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
22325 2008-07-03 Larry Ewing <lewing@novell.com>
22327 * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
22328 rectangle geometry computation. It matches in the sl
22329 implementation now.
22331 * shape.cpp: simplify rectangle and ellipse drawing and bounds so
22332 that they match the sl implementation and deal with degenerate
22333 cases better. Try to avoid setting up a clip rectangle when it
22336 2008-07-07 Chris Toshok <toshok@ximian.com>
22338 [ fixes the media element not showing up in flowers-for-you, bug
22340 * media.h, media.cpp: move Image::use_img_{width,height} and
22341 Image::updating into MediaBase and rename then
22342 use_media_{width,height} and updating_size_from_media.
22343 (MediaElement::OnPropertyChanged) duplicate the
22344 WidthProperty/HeightProperty stuff here (c&p from
22345 Image::OnPropertyChanged - this should probably just be refactored
22346 to MediaBase. will do this later).
22347 (MediaBase::ComputeBounds): we don't need the subclass
22348 ComputeBounds methods. Just put it here, as they share the same
22350 (MediaElement::SetMedia): remove the call to ComputeBounds here,
22351 since the new block of use_media_{width,height} checks will call
22352 UpdateBounds if they need to.
22354 2008-07-07 Fernando Herrera <fherrera@novell.com>
22358 * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
22359 we don't wait for new packets when the downloader has finished.
22360 Also calculate size based on offset + n for mms streams, so the
22361 ASFReader can check Eof based on positions.
22363 2008-07-05 Chris Toshok <toshok@ximian.com>
22365 * dirty.cpp: remove the down_dirty_node_succ and
22366 up_dirty_node_pred code from here. it arguably helped speed up
22367 insertions into the dirty lists, but at the cost of lots of
22368 dangling pointers. we always walk up the tree looking for a
22369 down/up node. works, and is much simpler. and fixes bug #362561.
22371 * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
22372 up_dirty_node_pred code.
22374 2008-07-04 Sebastien Pouliot <sebastien@ximian.com>
22376 * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
22377 when the atchname is invalid.
22379 2008-07-04 Chris Toshok <toshok@ximian.com>
22381 * runtime.cpp (Surface::EmitEventOnList): don't leak the event
22384 2008-07-03 Chris Toshok <toshok@ximian.com>
22386 * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
22387 values need to be initialized in the ctors, not in animation_init.
22389 2008-07-03 Sebastien Pouliot <sebastien@ximian.com>
22391 * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
22392 since they are needed for stretching.
22394 2008-07-03 Jeffrey Stedfast <fejj@novell.com>
22396 * text.cpp (TextBlock::Render): Check to see if we need to
22397 calculate layout before painting.
22399 2008-07-03 Sebastien Pouliot <sebastien@ximian.com>
22401 * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
22402 Also remove the closing point since it's not needed (but that was
22403 not the problem, just a small memory saving).
22404 [Re-fix bug #391684]
22406 2008-07-02 Jeffrey Stedfast <fejj@novell.com>
22408 * text.h (TextBlock::GetBoundingWidth/Height): Use
22409 GetValueNoDefault() so we don't get 0.0 for the width/height if
22412 Fixes for bug #404858
22414 * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
22416 * layout.cpp: Don't keep track of bbox_width and height anymore,
22417 it was never actually set to anything other than
22418 actual_width/height anyway.
22420 * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
22421 bounding box around the text (this is to aid in debugging text
22422 which may have a transform applied to it).
22424 * text.h (class TextBlock): Removed bbox_width and
22425 bbox_height. These were never anything other than
22426 actual_width/height respectively anyway.
22427 (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
22428 if set, else the ActualWidth.
22429 (TextBlock::GetBoundingHeight): Same.
22431 2008-07-02 Sebastien Pouliot <sebastien@ximian.com>
22433 * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
22434 since their callers already do this. Simplify a bit Shape::
22435 InsideObject to check ret only if a Clip is present (instead of
22436 always checking it).
22438 2008-07-02 Chris Toshok <toshok@ximian.com>
22440 * runtime.h, runtime.cpp: get rid of the cursor_func,
22441 invalidate_func, render_func stuff. Instead use 3 virtual
22442 methods: SetCursor(GdkCursor*), Invalidate(Rect), and
22443 ProcessUpdates(). That way the plugin can instantiate a
22444 WindowlessSurface which overrides those methods instead of having
22445 the stupid callback mechanism we had.
22447 2008-07-02 Chris Toshok <toshok@ximian.com>
22449 * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
22450 override the behavior.
22452 2008-07-02 Sebastien Pouliot <sebastien@ximian.com>
22454 * moon-path.c: Revert ordering change I made in r105586 to fix
22455 a clipping issue (fillrule bug) as this breaks stroke dash (which
22456 confirm the original behaviour was the correct one).
22457 [Fix most of #404858]
22459 2008-07-01 Jeffrey Stedfast <fejj@novell.com>
22461 Fixes for bug #405514.
22463 * text.cpp (TextBlock::Layout): If the Text property is empty,
22464 default the actualHeight to the font's height.
22465 (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
22466 property changes, we need to set dirty to true (in most cases) so
22467 that the actual width/height values are recalculated.
22469 2008-06-30 Sebastien Pouliot <sebastien@ximian.com>
22471 * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect
22472 this change Polyline and Polygon to use Cairo instead of (faster
22473 but less acurate) custom code. In reality PathGeometry (PML) is
22474 much more used than those Poly[line|gon] and (upcoming) caching
22475 negate much of the impact.
22476 * geometry.cpp: Use the more precise (and surviving)
22477 calc_line_bounds function that accept PenLineCap.
22479 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
22481 * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
22482 chanegs between null and an actual brush (in either direction),
22483 invalidate the cached path because the shape may need to
22484 recalculate the stroke offsets.
22486 2008-06-30 Sebastien Pouliot <sebastien@ximian.com>
22488 * xaml.cpp: Move reading the first point of C|Q beziers into the
22489 loop. Fix quite a few misrendering for http://xmldocs.net/ball
22490 [Partial fix for #404858]
22492 2008-06-30 Chris Toshok <toshok@ximian.com>
22494 * dirty.cpp: add all the ordering smarts to keep the two dirty
22495 lists partially sorted. hopefully this won't be a huge
22498 * uielement.h, uielement.cpp: add 2 new dirty pointers. a "succ"
22499 pointer for the down dirty list, and a "pred" for the up dirty
22502 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
22504 * list.cpp (List::InsertBefore): Handle a NULL @before.
22506 2008-06-30 Geoff Norton <gnorton@novell.com>
22508 * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
22509 more sane while we determine how to fix this properly.
22511 2008-06-30 Jeffrey Stedfast <fejj@novell.com>
22513 * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
22515 (Ellipse::ComputeShapeBounds): Same.
22517 2008-06-30 Michael Dominic K. <mdk@mdk.am>
22519 * animation.cpp: Make sure our default KeySplines parameters are correct
22520 to generate a linear dynamics curve as Silverlight. Fixes #404850.
22522 2008-06-30 Fernando Herrera <fherrera@novell.com>
22524 * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
22526 2008-06-30 Fernando Herrera <fherrera@novell.com>
22529 * pipeline.cpp: Implement the packet writer MemoryQueueSource.
22533 * media.cpp: Use MemoryQueueSource for all mms streams
22534 * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
22536 2008-06-29 Chris Toshok <toshok@ximian.com>
22538 * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
22539 child changes, invalidate them here.
22541 * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
22542 subtree invalidate from the zindex processing here.
22544 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22546 * pipeline-ffmpeg.cpp: Add debug spew.
22547 * media.cpp: Remove debug spew.
22549 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22551 * media.cpp, media.h: Add streamed markers to the media element on the
22554 2008-06-28 Geoff Norton <gnorton@novell.com>
22556 * downloader.h: The finished event raises a success condition now
22557 so that we can notify failure on unsuccessful downloads.
22559 2008-06-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
22561 * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
22562 has stored, now called by the MediaPlayer when seeking. Execute the
22563 'seeking complete' logic on the main thread (marshalling
22564 SeekCallback to the main thread). Always use the thread-safe
22565 AddTickCallSafe instead of AddTickCall, and override
22566 EventSurface::SetSurface to lock/unlock the required locks.
22567 * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
22568 has stored, now called by the MediaPlayer when seeking. Execute the
22569 'seeking complete' logic on the main thread (marshalling
22570 SeekCallback to the main thread), and set the previous_position on
22571 the MediaElement to the seeked-to position when the seek is
22572 finished. Always use the thread-safe AddTickCallSafe instead of
22573 AddTickCall, and override EventSurface::SetSurface to lock/unlock
22574 the required locks.
22575 * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
22576 thread-safe version (AddTickCallSafe) and don't do any locking in
22577 AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
22578 SetSurface can do the proper locking.
22579 * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
22580 comparing to/from pts, MediaPlayer will now set previous_position
22581 correctly when seeking. AdvanceFrame: only check markers if we
22582 advanced or if we're not seeking. SetSurface: add proper locking,
22583 and use AddTickCallSafe where appropiate.
22585 2008-06-27 Larry Ewing <lewing@novell.com>
22587 * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
22588 affects the subtree as well.
22590 2008-06-27 Larry Ewing <lewing@novell.com>
22592 * uielement.cpp (UIElement::OnPropertyChanged): on things that can
22593 potentially be trapped by the Invalidate visibility check we need
22594 to invalidate the whole subtree before we start processing the
22595 dirty lists to avoid ordering issues.
22597 Fixes test/xaml/assorted/rendering-glitches2.html.
22599 2008-06-27 Chris Toshok <toshok@ximian.com>
22601 * panel.cpp (Panel::FrontToBack): add a special case for
22602 non-translucent (but NULL background) panels - we don't render
22605 2008-06-27 Larry Ewing <lewing@novell.com>
22607 * panel.cpp (Panel::FrontToBack): treat opacity specially for
22608 panel since we need the right subtree render region in PreRender.
22610 2008-06-27 Jeffrey Stedfast <fejj@novell.com>
22612 * downloader.cpp (dummy_downloader_create_web_request): Return
22613 NULL to fix a compile warning about control reaching the end of a
22616 2008-06-27 Stephane Delcroix <sdelcroix@novell.com>
22618 * downloader.[h|cpp]: move browserrequest/response from the plugin
22619 as downloaderrequest/response.
22621 2008-06-26 Chris Toshok <toshok@ximian.com>
22623 * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
22626 * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
22627 condition that was keeping small surfaces from being cached, so
22628 bubblemark gets a win from this (from ~38 to 70+ fps on my
22630 (Shape::ShiftPosition): if we have a cached surface, set the
22631 device offset to mirror the new bounds x/y.
22633 2008-06-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
22635 * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
22636 dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
22637 Change AddTickCall to take a TickCallHandler (EventObject*)
22638 function pointer and a EventObject * tick_data instead of untyped
22639 function pointer/tick_data.
22641 2008-06-26 Chris Toshok <toshok@ximian.com>
22643 * dependencyobject.h,
22644 dependencyobject.cpp (DependencyProperty::DependencyProperty):
22645 convert the name to downcase prior to registering and prior to
22646 calling g_hash_table_lookup to remove the casecmp overhead from
22647 our key comparisons. store the converted name in DP::hash_key.
22649 * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
22652 * type.cpp: strcase_equal -> g_strcasecmp.
22654 * playlist.cpp (PlaylistParser::OnStartElement): same.
22656 2008-06-26 Jeffrey Stedfast <fejj@novell.com>
22658 * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
22659 logic/compiler warning and at the same time simplified.
22661 * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
22662 thickness into consideration. Fixes bug #400657.
22663 (Ellipse::ComputeShapeBounds): Same.
22665 2008-06-26 Chris Toshok <toshok@ximian.com>
22667 * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
22668 re-sort the children by zindex.
22670 * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
22672 * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
22673 here. just add it to the dirty list.
22675 * transform.h, transform.cpp: move the OnSubPropertyChanged method
22676 to MatrixTransform, so we can notify our listeners with the right
22679 2008-06-26 Chris Toshok <toshok@ximian.com>
22681 * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
22682 need this to deal with sub-dependencyobjects of transforms (in
22683 this case, MatrixTransform's Matrix object.) when you set
22684 properties on these subobjects, we need to update the transform.
22686 2008-06-26 Chris Toshok <toshok@ximian.com>
22688 * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
22689 think it used to be there and was removed by me in a flurry of
22690 propertychanged event fixing way back) to take care of brushes
22691 properly causing the uielement to invalidate when the Brush's
22692 transform/relativetransform changes.
22694 2008-06-26 Sebastien Pouliot <sebastien@ximian.com>
22696 * geometry.h: #ifdef out GeometryFlags until we start using it.
22697 * shape.cpp: Remove unused global variable.
22699 2008-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
22701 * mplayer.cpp: AudioFinished: Check if we still have audio when the
22702 callback is reached. Fixes test-double-stop.html.
22704 2008-06-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
22706 * mplayer.cpp: When calculating start_time take into account current
22707 position. Fixes test-video-only-seek.html (and fox seeking without
22710 2008-06-25 Jeffrey Stedfast <fejj@novell.com>
22712 * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
22715 2008-06-25 Sebastien Pouliot <sebastien@ximian.com>
22717 * geometry.cpp: Cache bounds, both logical and "physical" for
22718 PathFigure. This reduce the number of time we need to call
22719 cairo_[path|stroke|fill]_extents functions and speed up many
22721 * geometry.h: Add stuff needed for geometry.cpp changes.
22722 * xaml.cpp: Change geometry_from_str to directly create a
22723 moon_path and avoid the PathFigure[Collection] DO. This match
22724 how Silverlight handle Path Markup Language (PML) and reduce
22725 memory requirements when huge PML are used.
22727 2008-06-24 Chris Toshok <toshok@ximian.com>
22729 * shape.cpp (calc_offsets): we don't want to divide by the sin,
22730 because as angle approaches either 0, PI, or PI/2, the sin will
22731 approach 0, and therefore the deltas will grow very, very large.
22732 Turns out multiplying is what we want.
22734 2008-06-24 Larry Ewing <lewing@novell.com>
22736 * runtime.cpp (Surface::Resize): set the width and height properly
22737 in the windowless case, let the widget resize logic handle it
22739 (Surface:render_cb): don't process dirty elements if we are in a
22740 zombie state, just clear the dirty lists and move on. Fixes a
22741 crash we were seeing when calling ForceRender on a zombie plugin.
22743 2008-06-24 Chris Toshok <toshok@ximian.com>
22745 * runtime.cpp: in the switch from function pointer to integer in
22746 the HandleMouseEvent stuff, I didn't catch that C++ apparently
22747 doesn't flag NULL as different from 0. This was causing the
22748 "HandleMouseEvent (NULL" to become effectively become
22749 "HandleMouseEvent (UIElement::DestroyedEvent" which of course
22750 breaks all sorts of things. In bug 401884 it was causing the
22751 namescope to drop the named item from its hashtable, causing the
22752 tattoo needle to not move vertically.
22754 2008-06-23 Chris Toshok <toshok@ximian.com>
22756 * uielement.cpp (UIElement::PreRender): comment from the code is
22759 we need this check because ::PreRender can (and will) be called
22760 for elements with empty regions.
22762 The region passed in here is the redraw region intersected with
22763 the render bounds of a given element. For Panels with no
22764 width/height specified in the xaml, this region will be
22765 empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
22766 calling node if either the panel background or any of the children
22767 intersect the redraw region.) We can't clip to the empty region,
22768 obviously, as it will keep all descendents from drawing to the
22771 2008-06-23 Chris Toshok <toshok@ximian.com>
22773 * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
22774 the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
22775 other, more specialized bounds that also need updating.
22777 * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
22778 to UIElement::ShiftPosition and also update bounds_with_children.
22780 * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
22781 chain up to Canvas::ShiftPosition, and also update render_bounds.
22783 2008-06-23 Chris Toshok <toshok@ximian.com>
22785 * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
22786 between UpdatePosition and UpdateTransform according to the
22787 updatepos=yes/no override.
22789 * runtime.h, runtime.cpp: add updatepos=yes/no override.
22791 2008-06-23 Michael Dominic K. <mdk@mdk.am>
22793 * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
22795 2008-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
22797 * media.cpp: Don't check markers if from > to, no markers will ever be
22798 found in that interval. Also detect forward seeks by checking the
22799 difference between from and to, if difference > 1s, behave as a
22800 seek (and don't emit markers in that interval).
22801 * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
22803 2008-06-20 Jeffrey Stedfast <fejj@novell.com>
22805 * animation.h: Added "Property Accessor" comments and grouped the
22806 property accessors, etc.
22808 * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
22810 (EventObject::AddTickCall): Same.
22812 * dependencyobject.h (EventObject::GetSurface): Don't amke this
22813 virtual, nothing overrides it currently.
22815 2008-06-20 Michael Dominic K. <mdk@mdk.am>
22820 * clock.h: When detaching/reattaching to Surface execute a special
22821 handler on clocks that (in case of animation clocks) removes the update
22822 property handler. This fixes the (regressed some time ago)
22823 StoryboardEnterLeave semantics test.
22825 2008-06-19 Jackson Harper <jackson@ximian.com>
22828 * type-generated.cpp: Make sure the content property is set.
22830 2008-06-19 Larry Ewing <lewing@novell.com>
22832 * uielement.cpp (UIElement::PreRender): work around what appears
22833 to be a bug in the ftb logic by not clipping to the render region.
22835 * clock.cpp (SystemTimeSource::Start): make the timer priority
22836 DEFAULT again since otherwise we can get into starvation
22839 * uielement.cpp (UIElement::PreRender): don't save/restore around
22840 the clip changes, they restrict the group bounds and speed up
22841 opacity related masking substantially. (See bubblemark).
22843 2008-06-19 Jeffrey Stedfast <fejj@novell.com>
22845 * font.cpp (FontFace::GetExtents): Only set face pixel size if the
22846 requested size is not what we already have set.
22847 (FontFace::LoadGlyph): Same.
22848 (FontFace::Kerning): Need to set pixel sizes here or our kerning
22851 2008-06-19 Chris Toshok <toshok@ximian.com>
22853 * canvas.cpp (Canvas::OnSubPropertyChanged): call
22854 ui->UpdatePosition instead of UpdateTransform. Since
22855 UpdateTransform calls UpdateBounds, this should save us a
22856 sometimes costly (in the case of Shape's) trip through
22859 * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
22860 node) and ComputePosition (called from ProcessDownDirtyElements.)
22861 (UIElement::ComputePosition): Apply the inverse absolute transform
22862 to the bounds x/y, compute the new transform, then reapply it to
22863 the bounds x/y to compute our new position.
22864 (UIElement::UpdateTransform): clear the DirtyPosition flag.
22865 (UIElement::UpdatePosition): only add the DirtyPosition flag if
22866 the Dirty*Transform flags aren't already set.
22869 * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
22870 Clip, LocalClip, and Position (only Position is implemented).
22872 * dirty.h: clean up the enum some, and add 3 new passes (only one
22873 of which, DirtyPosition, is implemented).
22875 2008-06-19 Jeffrey Stedfast <fejj@novell.com>
22877 * transform.cpp: Started adding property accessor methods.
22879 * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
22880 (Canvas::[G,S]etTop): Same.
22882 * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
22883 (UIElement::[G,S]etTop): Same.
22885 2008-06-19 Chris Toshok <toshok@ximian.com>
22887 * rect.h: add Get{Top,Bottom}{Left,Right} methods.
22889 * point.h, point.cpp: add Transform method.
22891 2008-06-19 Michael Dominic K. <mdk@mdk.am>
22893 * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
22894 keyframes specified the duration is 0, not Automatic. This fixes the
22895 http://www.etonline.com/silverlight/grammys50/ website.
22897 2008-06-18 Sebastien Pouliot <sebastien@ximian.com>
22899 * geometry.cpp: Use the new moon-path functions for ArcSegment
22900 and QuadraticBezierSegment
22901 * moon-path.c: Change some validation to use g_return_if_fail
22903 2008-06-18 Jeffrey Stedfast <fejj@novell.com>
22905 * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
22908 * control.cpp (Control::GetTransformFor): Simplified.
22910 * uielement.cpp (UIElement::SetLeft): Added for setting
22911 Canvas.Left property.
22912 (UIElement::GetLeft): Same.
22913 (UIElement::SetTop): Same.
22914 (UIElement::GetTop): Same.
22916 * canvas.cpp (Canvas::GetTransformFor): Simplified.
22918 2008-06-18 Sebastien Pouliot <sebastien@ximian.com>
22920 * shape.cpp: When possible (i.e. if we won't change the bounds
22921 anyway) avoid the second pass inside Shape::ComputeStretchBounds.
22922 This reduce (but does not eliminate) a BIG bottleneck for SL
22923 applications with many path using stretch (e.g. SL world).
22925 2008-06-18 Geoff Norton <gnorton@novell.com>
22927 * media.cpp: The state when Seeking should not be changed to Stopped.
22928 Fixes another test.
22930 2008-06-17 Jeffrey Stedfast <fejj@novell.com>
22932 Partial fix for bug #400657.
22934 * dependencyobject.cpp (DependencyObject::IsValueValid): If the
22935 value is a null dependency object, don't check that the types
22936 match - it doesn't matter.
22938 * color.cpp (color_to_string): New convenience utility function to
22939 aid in debugging. Returns a pointer to a static string buffer, so
22942 2008-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22944 * playlist.cpp, playlist.h: Only unref/null out the media in
22945 PlaylistEntry::Stop if we're a playlist and not if we're a single
22948 2008-06-17 Sebastien Pouliot <sebastien@ximian.com>
22950 * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
22951 can be reused without a PathFigure-derived instance. Refactor
22952 code to expand/realloc paths to reduce duplication.
22954 2008-06-16 Chris Toshok <toshok@ximian.com>
22956 * uielement.cpp (UIElement::OnPropertyChanged): call
22957 Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
22959 (UIElement::OnSubPropertyChanged): same.
22961 2008-06-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
22963 * playlist.cpp: When Merging items only merge duration if the source
22965 * media.cpp: MediaElement::MediaOpened: when setting the media on the
22966 current item in the playlist, make sure we set the media on a
22967 PlaylistEntry, not on a (nested) Playlist.
22969 2008-06-16 Jeffrey Stedfast <fejj@novell.com>
22971 * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
22972 g_error() with g_warning(). There's really nothing else we can do
22974 (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
22975 allocating it again? Maybe some resources have been released since
22976 the ctor was called?
22978 * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
22979 g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
22981 * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
22982 g_warning() and return fail.
22984 2008-06-16 Michael Dominic K. <mdk@mdk.am>
22986 * clock.cpp: Don't do the ExtraRepeat action when seeking.
22988 2008-06-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
22990 * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
22992 * playlist.cpp: When we stop, clear out our media. This fixes an issue
22993 where we didn't correctly download a file if it was stopped after
22994 it was opened, but before fully downloaded, and then restarted.
22996 2008-06-13 Jeffrey Stedfast <fejj@novell.com>
22998 * dependencyobject.cpp (include): stdlib.h for strtol()
23000 Fix for jumping to the last page in PageTurn.
23002 * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
23003 UpdateTotalRenderVisibility() when the clip changes.
23005 2008-06-13 Michael Dominic K. <mdk@mdk.am>
23009 * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
23011 2008-06-13 Michael Dominic K. <mdk@mdk.am>
23017 * moon-curves.h: First version of the new algho for calculating the "y
23018 at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
23019 AnimationMatrix2 test.
23021 2008-06-12 Jackson Harper <jackson@ximian.com>
23023 * xaml.cpp: Remove some cruft.
23024 - Rename Custom to Managed
23025 - We don't need element maps for the namespaces anymore
23026 - Deploy can go into the default list of namespaces.
23028 2008-06-12 Fernando Herrera <fherrera@novell.com>
23030 * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
23031 terminated strings. Also keep any uri paramson the mms Ref.
23033 2008-06-12 Jackson Harper <jackson@ximian.com>
23035 * xaml.cpp: Use the new stuff for creating wrapped types.
23036 - make XamlElementInstance pure virtual.
23038 2008-06-12 Jackson Harper <jackson@ximian.com>
23040 * xaml.cpp: Clean up API for creating wrapped dependency objects.
23042 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
23044 * type.cpp: Fix type verification to not check 2.0 types for 1.0
23047 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
23049 * media.cpp, media.h: Don't AutoPlay playlists which have already been
23050 autoplayed. Make Play/Pause/Stop/Seek async.
23051 * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
23053 2008-06-12 Chris Toshok <toshok@ximian.com>
23055 * control.cpp, control.h, deployment.h, frameworkelement.h,
23056 grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
23057 uielement.h, value.h, xaml.cpp: I was a little too aggressive. we
23058 can't use SL_2_0 in most places in headers (or rather, shouldn't).
23059 It might be a good idea to remove all references to it, but this
23060 at least gets the ms-tests running and passing again --with-mono.
23061 Switch to using SL_2_0 around the #includes in the .cpp files, and
23062 in value.h/type.h just include the 2.0 types.
23064 * usercontrol.h, usercontrol.cpp: split out the code from
23065 control.h, control.cpp here.
23067 * Makefile.am: add usercontrol.[h,cpp]
23069 * typegen/typegen.cs: fix up the header emission.
23071 2008-06-12 Sebastien Pouliot <sebastien@ximian.com>
23073 * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
23074 ComputeBounds to avoid creating/destroying a new cairo context for
23075 each figure (it's now shared). Refactor PathFigure::Build not to scan
23076 the path list twice and rely on moon-path automatic size increase.
23077 Also avoid cairo_fill_extents if the path can't be filled or no fill
23080 2008-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
23082 * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
23083 can't get a surface, nor if the surface is a zombie.
23084 * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
23085 return NULL now, add a null check.
23087 2008-06-11 Jackson Harper <jackson@ximian.com>
23089 * xaml.cpp: Move GetKind to the info. Doesn't make sense for
23090 Instances to have a kind (they can access their kind from their
23093 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
23095 * geometry.cpp: Remove unneeded cairo_save|restore inside Draw
23096 methods (since Shape::Draw already does it) and remove
23097 cairo_set_fill_rule (since Shape::Fill does it).
23099 2008-06-11 Jackson Harper <jackson@ximian.com>
23101 * xaml.cpp: Clean up the namespace map when destroying the parser.
23103 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
23105 * geometry.h: Fix GeometryGround::ComputeBounds so it does
23106 not always returns 0,0,0,0 (from Geometry).
23108 2008-06-11 Geoff Norton <gnorton@novell.com>
23110 * downloader.cpp: Only Abort if we have a surface.
23111 * runtime.cpp: Detach the downloaders when we zombify.
23113 2008-06-11 Sebastien Pouliot <sebastien@ximian.com>
23115 * moon-path.c: Reorder ellipse points so the fill rule can be
23116 applied correcly (e.g. filling or clipping).
23118 2008-06-11 Michael Dominic K. <mdk@mdk.am>
23120 * clock.cpp: Fixing seeking on nested storyboards. Fixes
23121 seek-test-nested-storyboard.xaml in assorted and one more
23122 AnimationMatrix2 block. Now only one left to fix...
23124 2008-06-10 Geoff Norton <gnorton@novell.com>
23126 * mms-downloader.cpp: Reset our internal state after seeking so
23127 we can resume the stream in the right place.
23129 2008-06-10 Geoff Norton <gnorton@novell.com>
23131 * mms-downlodaer.cpp: Remove some improperly commited debug code
23133 2008-06-10 Chris Toshok <toshok@ximian.com>
23135 * control.h, control.cpp, deployment.h, uielement.h,
23136 uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
23137 runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
23138 now. I'll be changing that ifdef soon.) Also, mark all 2.0
23139 specific types with the following typegen pragma: /*
23140 @SilverlightVersion="2" */ so that the generated files contain the
23141 proper ifdefs as well.
23143 * type-generated.cpp, type.h, value.h: resync with new ifdefs.
23145 2008-06-10 Jackson Harper <jackson@ximian.com>
23147 * dependencyobject.cpp: Add todo for Name validation.
23149 2008-06-11 Fernando Herrera <fherrera@novell.com>
23151 * xaml.cpp: Accept numbers and strings representing numbers as
23152 values for BOOL properties. Also accept "true" and "false" case
23154 * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
23155 ending uris, so just check for "MSWMExt=.asf".
23156 Fixes hsn.tv, bug #362328.
23158 2008-06-10 Jackson Harper <jackson@ximian.com>
23160 * xaml.cpp: ContentProperty should be on the ElementInfo not the
23161 ElementInstance, since you can only have one content property per
23164 2008-06-10 Geoff Norton <gnorton@novell.com>
23166 * mms-downloader.cpp: Fix some looping logic when seeking (partially
23167 fixed). Fix a typo when enumerating the streams array to not exceed
23170 2008-06-10 Jackson Harper <jackson@ximian.com>
23172 * xaml.cpp: Remove default prefix override check. This must have
23173 only been in one of the early versions of SL because I can't get
23174 SL to do it anymore. This helps fix video page turn.
23176 2008-06-10 Jackson Harper <jackson@ximian.com>
23178 * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
23180 2008-06-10 Chris Toshok <toshok@ximian.com>
23182 * dependencyobject.h, dependencyobject.cpp: split the Emit()
23183 machinery up into 3 methods. StartEmit, DoEmit, and FinishEmit.
23184 StartEmit returns a context object passed to the other two
23187 * runtime.h, runtime.cpp: use the new
23188 EventObject::{Start,Do,Finish}Emit methods to make event bubbling
23189 more transactional - any changes made to the listener list for the
23190 event we're bubbling up, for any element in our input list, are
23191 delayed until after the event has propagated. Fixes our test id
23192 191 (test-bubbling.html) as well as bug #351568.
23194 2008-06-10 Sebastien Pouliot <sebastien@ximian.com>
23196 * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
23197 its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
23198 reuse it's physical bounds for logical instead of computing it
23201 2008-06-10 Michael Dominic K. <mdk@mdk.am>
23206 * clock.h: Replacing CreateClock with AllocateClock implementation and
23207 making sure the latter is called for Storyboards. That fixes the nested
23208 storyboards inside other storyboards...
23209 test-animation-nested-storyboard.xaml and one step more for
23212 2008-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
23214 * dependencyobject.h: Another greppable comment.
23216 2008-06-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
23218 * dependencyobject.cpp: Add comment to assert which shows up while
23221 2008-06-06 Geoff Norton <gnorton@novell.com>
23223 * file-downloader.h: Fix a bug between argument sending and class
23224 variables that was causing us to free and strdup the free'd pointer.
23226 2008-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
23228 * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
23231 2008-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
23233 * src.mdp: Updated.
23235 2008-06-06 Jeffrey Stedfast <fejj@novell.com>
23237 * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
23238 members change order (like it did recently).
23239 (wrap_dependency_object): Get rid of unused variables.
23241 * media.cpp (Image): Made bools share a single int.
23243 2008-06-06 Jackson Harper <jackson@ximian.com>
23245 * xaml.cpp: Use the Type system for looking up elements, make
23246 things a little more OOP so we can easily add some of the 2.0
23247 features. Note: This is going to break x:Code and deployment
23250 2008-06-05 Geoff Norton <gnorton@novell.com>
23252 * downloader.cpp, downloader.h: More refactoring to hide the zip related
23253 details in the FileDownloader. NOTE: The exposure of the file downloader
23254 to the Text side is ugly and should be cleaned up.
23255 * text.cpp: Access obfuscated font details thru the FileDownloader API.
23256 * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
23257 the filename thru the downlodaer api.
23258 * downloader.cpp: No longer leak InternalDownloaders.
23260 2008-06-05 Geoff Norton <gnorton@novell.com>
23262 * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
23263 the $P packet pair, and implement and initial algorithm to do proper
23264 bandwidth stream selection.
23266 2008-06-05 Geoff Norton <gnorton@novell.com>
23268 * downloader.cpp: Remove some left over unused variables, and the
23269 is_valid_mms_type inline.
23271 2008-06-05 Geoff Norton <gnorton@novell.com>
23273 * Makefile.am: Add file-downloader and mms-downloader to the build.
23274 * file-downloader.(cpp|h): This class is a implementation of the new
23275 InternalDownloader class utilized by the downloader to differentiate
23276 between MMS and regular requests. We should move the zip logic here.
23277 * mms-downloader.(cpp|h): This class is the MMS implementation of the
23278 InternalDownloader class.
23279 * internal-downloader.h: Route callbacks from the plugin thru this class
23280 to their appropriate file (NPStream) / MMS based implementations.
23281 * downloader.cpp: Update the API to call the InternalDownloader based
23282 representation instead of large if (mms) branches.
23284 2008-06-05 Geoff Norton <gnorton@novell.com>
23286 * downloader.cpp, downloader.h: Initial implementation of MMS inside
23287 libmoon. The API has been extended to register two additional callbacks
23288 to set HTTP headers, and the HTTP body.
23290 2008-06-05 Michael Dominic K. <mdk@mdk.am>
23292 * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
23293 --with-compatibility-bugs mode. It looks like the parsing is fine. The
23294 bug is now "implemented" in clock.cpp.
23296 2008-06-05 Michael Dominic K. <mdk@mdk.am>
23298 * clock.cpp: In ComputeNewTime when we're going over our duration time
23299 and we're AutoReversed, check actually how big the diff is cause it
23300 might be that we need to "wrap around self" and switch to forward time
23301 direction anyways (such is the case with seeking).
23303 In other words, allow to seek into particular interation of
23304 RepeatBehavior="XXXx", not only the first one. Fixes one more
23305 AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
23307 This prolly needs a littlbe bit more work still, similiar mechanism
23308 needs to be present in DoRepeat etc.
23310 2008-06-05 Stephane Delcroix <sdelcroix@novell.com>
23312 * stylus.cpp: fixing a bug. stupid me.
23314 2008-06-05 Stephane Delcroix <sdelcroix@novell.com>
23316 * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
23317 ExtendTo (double, double) methods.
23319 * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
23320 intersection of bounds and StylusPointCollection::GetBounds in HitTest
23321 to avoid checking for stroke intersection in most of the cases. Speed
23322 up erasing in inkJournal.
23324 2008-06-04 Michael Dominic K. <mdk@mdk.am>
23326 * clock.cpp: Interesting -- looks like in SL the timespan-based
23327 RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
23328 0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
23329 Anyways, implementing this and fixing two more blocks in
23332 2008-06-04 Michael Dominic K. <mdk@mdk.am>
23334 * clock.cpp: Slightly reworking the seek offsett calculations to include
23335 the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
23336 more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
23339 2008-06-04 Michael Dominic K. <mdk@mdk.am>
23341 * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
23342 test-seeking-speed-ratio.xaml from assorted tests and one more block in
23343 the AnimationMatrix2 test.
23345 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
23347 * control.cpp (user_control_new): %p does what %x was trying to do
23348 in this case, but without compile warnings :)
23350 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
23352 Glyphs rendering optimization.
23354 * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
23355 instead of re-looping this logic again in Glyphs::Render().
23356 (Glyphs::Render): Just blit the path.
23358 2008-06-03 Chris Toshok <toshok@ximian.com>
23360 * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
23361 a bunch and remove all the redundant checks.
23363 (DependencyObject::MergeTemporaryNameScopes): merge both DO and
23364 Collection versions into the same method to reduce code
23367 * dependencyobject.h: no need to provide multiple overloads for
23368 MergeTemporaryNameScopes.
23370 2008-06-03 Jeffrey Stedfast <fejj@novell.com>
23372 Text rendering optimization via reduction of font loading.
23374 * font.cpp (FontFace): A new abstraction for FT_Face which is
23375 meant to prevent Moonlight from ahving to load the same font face
23376 multiple times just because the FontSize attributes don't match.
23377 (TextFont): Greatly simplified this class by using FontFace.
23379 2008-06-02 Jackson Harper <jackson@ximian.com>
23381 * xaml.cpp: Make sure we don't try to look up Content Properties
23382 on anything but elments. Property elements are given the
23383 XamlElementInfo of their parent so GetContentProperty on a
23384 PROPERTY element will return the parent's content property.
23386 2008-06-02 Michael Dominic K. <mdk@mdk.am>
23388 * clock.cpp: If we have duration-based RepeatBehavior set the
23389 repeat_count to 1 in bug-mode (--with-compatibility-bugs).
23391 2008-06-02 Michael Dominic K. <mdk@mdk.am>
23393 * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
23396 * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
23397 RepeatBehavior=0:0:0.
23399 2008-06-02 Michael Dominic K. <mdk@mdk.am>
23401 * clock.cpp: Even more timeline validation rules.
23403 2008-06-02 Sebastien Pouliot <sebastien@ximian.com>
23405 * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
23406 by 64.0 since this makes it clear why we're doing it.
23408 2008-05-30 Michael Dominic K. <mdk@mdk.am>
23410 * clock.cpp: Don't validate animations that have Duration of "00:00:00"
23411 and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
23414 2008-05-30 Michael Dominic K. <mdk@mdk.am>
23416 * xaml.cpp: Adding a compatibility option
23417 (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
23418 RepeatBehavior bug.
23420 2008-05-30 Michael Dominic K. <mdk@mdk.am>
23422 * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
23423 protection against the desync's coming from integers (TimeSpan) being
23424 multiplied by floating values (SpeedRatio). Better to be non-precise
23425 forward than backward.
23427 2008-05-30 Michael Dominic K. <mdk@mdk.am>
23429 * clock.cpp: The initial ticking difference needs to be multiplied by
23430 the SpeedRatio as well. This fixes few timing desyncs. Fixes
23431 clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
23432 block from the AnimationMatrix2.
23434 2008-05-29 Jeffrey Stedfast <fejj@novell.com>
23436 * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
23437 you set an Image's Source property to an empty string (or null),
23438 it stops rendering the image.
23440 2008-05-29 Stephane Delcroix <sdelcroix@novell.com>
23442 * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
23444 2008-05-29 Jeffrey Stedfast <fejj@novell.com>
23446 * layout.cpp|h (TextRun::IsUnderlined): Replacement for
23447 TextLayout::IsUnderline().
23448 (TextLayout::IsUnderline): Removed.
23450 * font.h (enum TextDecorations): Add a comment explaining that
23451 this is meant to be used as bit flags and not a normal
23454 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
23456 * font.h: Revert TextWrapping change as it regress DRT tests
23457 (it's possible that the value were right, but did not match
23458 the managed value used by Silverlight 1.1).
23460 2008-05-29 Jackson Harper <jackson@ximian.com>
23462 * type.cpp: INVALID types don't have content properties.
23463 * dependencyobject.h: Content properties are stored on the Type so
23464 we don't need to store them here.
23465 * xaml.cpp: Get content properties from the Type system instead of
23466 the parser's internal type map.
23467 - We don't need to do any special handling in the start_element
23468 handler for content properties anymore.
23469 * control.cpp|h: We don't need to expose the content property
23471 - Mark the content property for controls.
23473 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
23475 * font.h: Fix enum values for TextWrapping
23476 * layout.cpp: Fix regression (in earlier commit) for wrapping.
23478 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
23480 * debug.cpp: Fix an invalid read issue found with valgrind.
23482 2008-05-29 Sebastien Pouliot <sebastien@ximian.com>
23484 * layout.h|cpp: Handle invalid values for TextDecorations and
23485 TextWrapping like Silverlight does.
23487 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
23489 * runtime.cpp: When setting the background color delete any previoys
23492 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
23494 * uielement.cpp: Fix minor leak.
23496 2008-05-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
23498 * src.mdp: Updated.
23500 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23502 * http-streaming.cpp: Handle quoted feature strings.
23504 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23506 * downloader.cpp: Null out request_position in the ctor.
23508 2008-05-28 Michael Dominic K. <mdk@mdk.am>
23510 * clock.cpp: Reverting the change that invalidates the timelines which
23511 have 00:00:00 duration. It is actually supported by SL.
23513 2008-05-28 Michael Dominic K. <mdk@mdk.am>
23515 * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
23516 Multiply always instead of recursing down into properties.
23518 2008-05-28 Michael Dominic K. <mdk@mdk.am>
23520 * animation.cpp: If "To" and "By" are not specified use the
23521 defaultOriginValue always instead of "start" (which might be "From").
23522 Fixes the test-animation-only-from.xaml and the green block in
23525 2008-05-28 Michael Dominic K. <mdk@mdk.am>
23527 * clock.cpp: When Validating the timeline, if RepeatBehavior is
23528 incorrect make it 1.0 instead of marking the timeline as invalid.
23530 2008-05-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
23532 * downloader.cpp: Fix typo.
23534 2008-05-28 Sebastien Pouliot <sebastien@ximian.com>
23536 * enums.c: Fix None value in style_simulations_map and remove
23537 unneeded one (they exists only in WPF but SL parser does not like
23539 * font.cpp|h: Fix FontStyle and FontWeigth properties when the
23540 supplied value are invalid. Add new constants specific to SL.
23541 * text.h: Add simulation_none. Share an integer between all bool
23543 * text.cpp: Invalid values for StyleSimulation does not render
23545 * runtime.cpp: Invalid MouseCursor values hides the cursor.
23547 2008-05-27 Jeffrey Stedfast <fejj@novell.com>
23549 Fixes the Legend (Space Invaders) demo without breaking
23550 storyboard_EnterLeaveSemantics.htm.
23552 * clock.cpp|h (Clock::Completed): New virtual method which gets
23553 called when a clock completes.
23554 (Clock::ComputeNewTime): If a clock completes (has no more
23555 repeats, etc) then call ::Complete().
23556 (ClockGroup::ClockGroup): Changed the name of emitted_complete to
23557 emit_completed which has also changed the meaning a bit.
23558 (ClockGroup::Begin): Updated.
23559 (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
23560 then emit the Completed event and reset emit_completed back to
23561 false so we don't re-emit.
23562 (ClockGroup::Completed): Set emit_completed to true.
23564 2008-05-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
23566 * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
23567 DownloaderComplete only emit DownloadProgressChangedEvent if we
23570 2008-05-27 Michael Dominic K. <mdk@mdk.am>
23572 * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
23573 Silverlight 1.0/2.0 situation.
23575 2008-05-26 Michael Dominic K. <mdk@mdk.am>
23577 * clock.cpp: Don't validate timelines that have specified duration of
23578 00:00:00. Fixes the test-animation-zero-duration test.xaml.
23580 2008-05-26 Michael Dominic K. <mdk@mdk.am>
23583 * clock.h: When Validating the Timeline also make sure that the
23584 RepeatBehavior is correct, otherwise don't start the anim. Fixes the
23585 test-animation-zero-repeat-behavior test and brings us closer with
23586 AnimationMatrix2 test.
23588 2008-05-26 Michael Dominic K. <mdk@mdk.am>
23590 * clock.cpp: When Validating TimelineGroup don't forget to call parent's
23591 base validation method.
23593 2008-05-26 Michael Dominic K. <mdk@mdk.am>
23595 * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
23596 SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
23597 test-aniamtion-repeat-behavior.xaml test.
23599 2008-05-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
23601 * src.mdp: Updated.
23603 2008-05-23 Sebastien Pouliot <sebastien@ximian.com>
23605 * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
23606 cairo_save/cairo_restore since we don't use the context.
23608 2008-05-23 Stephane Delcroix <sdelcroix@novell.com>
23610 * dependencyobject.[h|cpp]: merge namescopes on SetValue.
23612 2008-05-23 Jeffrey Stedfast <fejj@novell.com>
23614 * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
23616 * text.cpp (Glyphs::Layout): Reverted previous commit and go back
23618 (Glyphs::Render): Same.
23620 2008-05-22 Chris Toshok <toshok@ximian.com>
23622 * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
23623 code. Only include the +2 to each side if the outline color is
23625 (Stroke::AddStylusPointToBounds): same.
23626 (Stroke::OnPropertyChanged): new method. we need to recompute the
23627 bounds if our DrawingAttributes change.
23628 (Stroke::OnSubPropertyChanged): same, if width/height/online-color
23629 of the drawing attributes change.
23631 2008-05-22 Sebastien Pouliot <sebastien@ximian.com>
23633 * brush.cpp: Fix defaults when wrong values are being used for
23634 enumerations from Javascript.
23635 [Fix part of #340799]
23637 2008-05-22 Jackson Harper <jackson@ximian.com>
23639 * dependencyobject.cpp: Only merge temp namescopes.
23641 2008-05-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
23643 * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
23644 surrounding event emission with ref/unref, set a flag specifying
23645 that we're doing event emission, and catch unrefs which would cause
23646 object destruction replacing them with a delayed unref.
23648 2008-05-21 Chris Toshok <toshok@ximian.com>
23650 * collection.cpp (Collection::Add): remove the check for AddToList
23651 returning -1. It never will. Also, call SetSurface() on the new
23652 child *before* we create the Collection::Node for it, so we can
23653 tell (in SetSurface) if it's being added individually to the
23654 surface, or as part of a subtree. This is required to fix
23655 storyboard_EnterLeaveSemantics.
23657 * animation.cpp (Storyboard::SetSurface): resume the clock when
23658 we're reattached to the surface, but *only* if we're being added
23659 as part of a subtree (that is, we already have a logical parent
23660 when we hit this method.)
23662 * clock.cpp (Clock::Begin): revert the previous
23663 change (has_started needs to be initialized to false). Required
23664 to fix storyboard_EnterLeaveSemantics.htm. We'll need to figure
23665 out another way to fix the site (or a better way that fixes one
23666 without breaking the other.)
23668 2008-05-21 Jeffrey Stedfast <fejj@novell.com>
23670 * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
23671 hard-coding the EM units ourselves.
23672 (Glyphs::Render): Same.
23674 * font.cpp (TextFont::PixelsPerEM): New convenience function.
23676 * clock.cpp (Clock::Begin): Init has_started to true. Fixes
23677 http://www.tek.co.jp/Legend
23679 * animation.cpp (Storyboard::storyboard_completed): Merged
23680 teardown_clockgroup() and invoke_completed() into a single
23681 callback. Also makes it so that we don't have to remove 2
23682 CompletedEvent handlers (which we were not doing properly afaict
23683 in Storyboard::Stop).
23684 (Storyboard::Stop): After unregistering the CompletedEvent handler
23685 and stopping the root_clock, tear down the clock group.
23687 2008-05-21 Larry Ewing <lewing@novell.com>
23689 * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
23690 ellipses a little better.
23691 (Shape::ComputeStretchBounds): modify the needs_clip logic a
23692 little to catch the degenerate ellipse cases we were running into.
23694 Fixes test-shape-ellipse-stroke*.xaml.
23696 2008-05-21 Michael Dominic K. <mdk@mdk.am>
23698 * clock.cpp: Include the offsett coming from the BeginTime in the
23699 seek_time calculations. Fixes seek-test-begin-time and
23700 seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
23702 2008-05-21 Michael Dominic K. <mdk@mdk.am>
23704 * clock.cpp: Actually do set the seek_time before using it.
23706 2008-05-21 Michael Dominic K. <mdk@mdk.am>
23708 * clock.cpp: When seeking ClockGroup, don't seek children as weel
23709 (results in cumulative behavior).
23711 2008-05-21 Sebastien Pouliot <sebastien@ximian.com>
23713 * font.cpp: (TextFont::Path) Avoid expensive save of cairo
23714 context since only the transform is changed (current point
23715 location is not part of the context).
23717 2008-05-20 Larry Ewing <lewing@novell.com>
23719 * runtime.cpp (Surface::motion_notify_callback): always return
23720 true in the windowed motion handler otherwise we something steals
23721 mouse events from us.
23723 Fixes most of MouseInput.htm
23725 2008-05-20 Michael Dominic K. <mdk@mdk.am>
23727 * clock.cpp: Fixing a problem where timeline with BeginTime set do not
23728 respond at all to Seek. Brings us closer with AnimationMatrix2.
23730 2008-05-19 Jackson Harper <jackson@ximian.com>
23732 * xaml.cpp: Only do the type wrapping if we are dealing with
23733 collection types, otherwise we just ignore the property decl.
23735 2008-05-19 Jackson Harper <jackson@ximian.com>
23737 * xaml.cpp: When we wrap a property we need to ignore the property
23738 element so that the children get added to the wrapped object
23740 * dependencyobject.cpp: We also need to merge the collection's
23741 namescope because collections can be created with their own temp
23742 namescope using createFromXaml.
23744 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23749 * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
23752 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23755 * animation.h: Adding an implementation for ExtraRepeatHandler to
23756 AnimationClock that fetches target value and sets it on
23757 AnimationStorage. Fixes clock37.xaml test.
23759 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23762 * animation.h: Adding helper methods to get target value out of the
23763 given AnimationTimeline. We're still missing implementations for
23764 keyframe-based anims. Coming soon.
23766 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23769 * animation.h: Adding two helper methods to AnimationStorage:
23770 GetStopValue (get's current base or (if set) stop value) and
23771 UpdatePropertyWithValue to manually force prop to a given state.
23773 2008-05-19 Michael Dominic K. <mdk@mdk.am>
23776 * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
23777 repeat. By default does nothing.
23779 2008-05-19 Jackson Harper <jackson@ximian.com>
23781 * xaml.cpp: When createFromXaml ('<some property>...</property>')
23782 is called, we need to create and return an object that represents
23783 that property. ie createFromXaml ('<Canvas.Triggers>...); should
23784 return a ResourceDictionary object.
23786 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23788 * downloader.cpp: Fix warnings.
23790 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23792 * clock.cpp: Added comment.
23794 2008-05-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
23796 * runtime.cpp: Destroy EventObject::objects_alive upon runtime
23799 2008-05-16 Miguel de Icaza <miguel@novell.com>
23801 * dependencyobject.h (DependencyObject::GetContentProperty):
23802 returns a DependencyProperty that is the target for the content of
23803 a XAML content assignment.
23805 * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
23806 Class attribute as the object has already been created.
23808 (start_element): Add support for the ContentPropertyAttribute on
23809 DependencyObjects to the XAML parser. This is very primitive
23810 support at this point, and does not support collections, or type
23811 conversions as specified on the docs.
23813 * control.cpp (Control::SetContent): Refactor setting the
23814 real_object into its own routine. Currently takes a Surface
23815 parameter, not clear that this is even needed, but kept for
23816 compatibility with the old code.
23818 (UserControl::OnPropertyChanged): Hook up setting the Content
23821 * runtime.cpp (Surface::Attach): Let the widget be UIElement.
23823 2008-05-16 Larry Ewing <lewing@novell.com>
23825 * shape.cpp: draw ellipses with no width/height specified as the
23828 Fixes StretchAndShapes.xaml.
23830 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23832 * media.cpp: Abort the downloader when we emit MediaFailed, and always
23833 emit a DownloadProgressChangedEvent with 1.0 when we're finished
23834 downloading (we won't get any writes if the file has already been
23835 downloaded and mozilla just gives us the filename).
23837 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23839 * src.mdp: Updated.
23841 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23843 * downloader.cpp: Don't emit any events if we don't have a surface. Add
23844 warnings to Send(Internal) when we have no surface (the plugin is
23845 already checking for it, so if the warning is printed we're doing
23846 something else wrong).
23847 * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
23848 create, and when the toplevel canvas changes or the surface is
23849 destroyed clear the downloader's surface pointer.
23851 2008-05-16 Jeffrey Stedfast <fejj@novell.com>
23853 * downloader.cpp (Downloader::Abort): Set download progress to 0.
23855 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23857 * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
23858 NotifySize, mozilla calls NotifySize for every write.
23860 2008-05-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
23862 * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
23864 2008-05-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
23866 * playlist.cpp: If we're stopping a playlist, reopen the first entry.
23867 * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
23868 so that Playlist can call them.
23870 2008-05-15 Larry Ewing <lewing@novell.com>
23872 * runtime.cpp (Surface::button_press_callback): stop firefox from
23873 stealing our focus in the widget case by always returning true on
23874 button press events. There may be a better way to handle this by
23875 only returning true if the press lands on and element but this at
23876 least improves the situation.
23878 Fixes FullScreenKey.htm.
23880 2008-05-15 Michael Dominic K. <mdk@mdk.am>
23882 * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
23883 Filling state, this makes the idle optimization cover all the cases. Big
23884 perf boost expected.
23886 2008-05-14 Jeffrey Stedfast <fejj@novell.com>
23888 Fix for tests/xaml/test-directory-in-zip.html
23890 * media.cpp (Image::Image): Initialize some new state variables to
23891 keep track of whether or not the FrameworkElement::Width and
23892 Height values are ever manually set.
23893 (Image::DownloaderComplete): Properly set the Width/Height
23894 property values based on whether a particular Width/Height have
23895 been requested. Use the image's native width/height if not.
23896 (Image::OnPropertyChanged): Listen for changes to Width/Height
23899 2008-05-14 Larry Ewing <lewing@novell.com>
23901 * src/uielement.cpp (UIElement::PostRender): clear any existing
23902 paths when rendering the bounds rectangle.
23904 2008-05-14 Jeffrey Stedfast <fejj@novell.com>
23906 * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
23907 of the more complex GetValue API.
23909 * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
23910 error, return -1 (since this is an int32 return value, not bool).
23912 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
23914 * media.cpp, media.h: Added MediaElement::IsLive, and move
23915 initialization of this field to before our MediaPlayer is opened.
23916 * mplayer.cpp, mplayer.h: For live sources the first frame might not
23917 come with pts = 0, so store that pts so that later we can correctly
23918 calculate how much we've actually played.
23920 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
23922 * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
23923 * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
23924 and skip entries with zero duration.
23926 2008-05-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
23928 * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
23929 the read lock if don't have a surface or timemanager.
23931 2008-05-14 Michael Dominic K. <mdk@mdk.am>
23933 * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
23934 children) on DoRepeat (). Fixes a small regression in clock21.xaml
23935 introduced with last commit.
23937 2008-05-14 Michael Dominic K. <mdk@mdk.am>
23940 * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
23941 it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
23943 2008-05-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
23945 * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
23946 crashes when javascript removes the plugin in an eventhandler.
23948 2008-05-13 Jeffrey Stedfast <fejj@novell.com>
23950 * media.cpp (MediaElement::DownloaderFailed): Make this more
23953 2008-05-13 Fernando Herrera <fherrera@novell.com>
23955 * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
23957 2008-05-13 Jeffrey Stedfast <fejj@novell.com>
23959 * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
23960 corruption of the source.* variables by creating local references
23961 to them and setting source.* to NULL before calling
23962 SetSourceInternal().
23964 2008-05-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
23966 * clock.cpp, clock.h: Remove InvokeOnMainThread.
23967 * dependencyobject.cpp, dependencyobject.h: EventObject: added
23968 AddTickCall. Requred when adding ticks from other than the
23970 * downloader.cpp: Send: use a TimeManager to add the timeout.
23971 * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
23972 TimeManager::InvokeOnMainThread anymore, add the timeouts using a
23973 TimeManager instance.
23975 2008-05-12 Jeffrey Stedfast <fejj@novell.com>
23977 * list.cpp (List::List): Init length to 0.
23978 (List::Clear): Reset length to 0.
23979 (List::Append): length++
23980 (List::Prepend): length++
23981 (List::Insert): length++
23982 (List::InsertBefore): length++
23983 (List::Unlink): length--
23984 (List::Length): Fixed to be O(0) instead of O(n)
23986 * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
23987 instead of comparing List::Length() to 0.
23988 (Stroke::HitTest): Same.
23990 2008-05-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
23992 * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
23993 prevents us from emitting the event again as a consequence of what
23994 any of the event handlers do.
23996 2008-05-12 Michael Dominic K. <mdk@mdk.am>
23999 * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
24001 2008-05-12 Michael Dominic K. <mdk@mdk.am>
24005 * dependencyobject.cpp:
24006 * dependencyobject.h: Float the AnimationStorage only when it's the
24009 2008-05-12 Michael Dominic K. <mdk@mdk.am>
24012 * animation.h: Introduce floating state for animation storage that has
24013 it's clock destroyed but it hasn't been stopped before. We need to keep the
24014 animation storage (reffed from the DependencyProperty hash) around to be
24015 able to get proper value for the next (continous) Storyboard on same
24016 property. Fixes #383879 and #375275.
24018 2008-05-09 Geoff Norton <gnorton@novell.com>
24020 * mplayer.cpp, pipeline.cpp, pipeline.h: When iterating streams
24021 ensure that we select the stream with the highest available bit
24022 rate, opposed to the first stream that we come across.
24024 2008-05-09 Jeffrey Stedfast <fejj@novell.com>
24026 * dependencyobject.cpp (DependencyObject::FindName): Don't need
24029 * namescope.cpp (NameScope::FindName): Simplify.
24031 2008-05-08 Larry Ewing <lewing@novell.com>
24033 * shape.cpp: silence some warnings.
24035 2008-05-08 Larry Ewing <lewing@novell.com>
24037 * shape.h: remove ClipOnWidthAndHeight method, replace with
24038 needs_clip variable.
24040 * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
24041 the actual size of the object before and after the stretch and the
24044 Speeds up Sprawl and a lot of other applications that use stretch
24047 2008-05-08 Larry Ewing <lewing@novell.com>
24049 * runtime.cpp (Surface::expose_to_drawable): fill the background
24050 instead of painting and don't create the clip until the rendering
24052 2008-05-08 Miguel de Icaza <miguel@novell.com>
24054 * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
24055 existing DependencyObject with the contents of a XAML string.
24057 Needed for Silverlight 2.0 support, for the new model:
24058 create object then do LoadComponent on it.
24060 2008-05-08 Sebastien Pouliot <sebastien@ximian.com>
24062 * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
24065 2008-05-07 Jeffrey Stedfast <fejj@novell.com>
24067 * font.cpp: Removed old layout code.
24068 (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
24069 conversion macros to make understanding the code easier. Also,
24070 added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
24071 of broken fixed-width CJK fonts.
24073 * clock.cpp (TimeManager::Stop): Added for convenience.
24074 (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
24075 can make sure it is init'd properly via SetTimerFrequency() before
24078 * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
24079 not it's source's Start(). We need things like frequency to be
24080 setup and other values to be initialized properly.
24081 (Surface::Attach): After calling canvas->OnLoaded(), check that we
24082 are not zombied - if we are, return.
24084 2008-05-07 Larry Ewing <lewing@novell.com>
24086 * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
24087 objects that the surface is undead.
24089 2008-05-06 Jeffrey Stedfast <fejj@novell.com>
24091 * animation.cpp (animation_shutdown): Renamed from
24092 animation_destroy().
24094 * text.cpp (text_shutdown): Renamed from text_destroy().
24096 * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
24097 include glib.h and use g_timeout_add() instead.
24098 (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
24099 not -1 (the timeout ids are uint, not int).
24100 (SystemTimeSource::SetTimerFrequency): Updated.
24101 (SystemTimeSource::Start): Updated.
24102 (SystemTimeSource::Stop): Updated.
24104 * list.cpp (List::Remove): Don't need to search for the node, we
24105 already have a pointer to it.
24107 2008-05-07 Larry Ewing <lewing@novell.com>
24109 * runtime.cpp (Surface::Resize): handle a resize in windowless mode
24112 Fixes part of windowless resizing.
24114 2008-05-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
24116 * media.cpp: Handle the rtsp protocol too.
24117 * playlist.cpp, playlist.h: Store base and source_name as Uris.
24118 Implement GetFullSourceName better, and do some uri validation.
24119 * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
24120 disables canonicalization of trailing directory separators since
24121 asx playlists may treat urls differently depending on the presence
24122 or absence of any trailing directory separators. Added Clone ().
24124 2008-05-06 Michael Dominic K. <mdk@mdk.am>
24127 * animation.h: When attaching new animation storage and previous storage
24128 exist, flag it as non-resetable (meaning that the storage will never
24129 reset animated property to base/stop value). This fixes the
24130 storyboard-stopping-two.html test.
24132 2008-05-06 Michael Dominic K. <mdk@mdk.am>
24134 * dependencyobject.cpp:
24135 * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
24136 returns the previously attached AnimationStorage.
24139 * animation.h: When attaching new animation storage try to inherit the
24140 resetValue from the previously attached storage. Reset value is the
24141 value that we reset to when storyboard is stopped (originally it always
24142 used to be the base value of the current AnimationStorage).
24144 This replicates the bahavior of SL where starting a new (second)
24145 storyboard on a property renders the prev storyboard useless
24146 (non updating the prop) but keeps it's "starting value" for storyboard
24147 reset. In other words we can say that starting a new storyboard on a
24148 prop makes this new storyboard a "continuation" of the prev storyboard.
24150 2008-05-05 Larry Ewing <lewing@novell.com>
24152 * runtime.cpp (Surface::render_cb): only call ForceRender if we
24155 2008-05-05 Larry Ewing <lewing@novell.com>
24157 * runtime.cpp: update the (almost unused) frame count where it can
24158 get hit in windowless. Clear existing paths before rendering the
24161 Minor cleanups to help with debugging the expose regions.
24163 2008-05-05 Jeffrey Stedfast <fejj@novell.com>
24165 * clock.cpp (TimeManager::Shutdown): Renamed from
24166 TimeManager::Stop() and also updated to remove all registered
24169 * runtime.cpp (Surface): We no longer keep track of signal ids, we
24170 simply remove all signals on the widgets with 'this' as the user
24173 * clock.cpp (TimeManager::Stop): Added. New method to stop the
24176 * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
24177 emission of timeout events.
24179 2008-05-05 Michael Dominic K. <mdk@mdk.am>
24181 * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
24184 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
24186 * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
24187 playing playlists, we only emit MediaEnded if we're playing the
24188 last entry in the playlist. Call Playlist::OnEntryEnded manually
24189 instead of letting the playlist rely on the MediaEnded event, since
24190 the MediaEnded event isn't raised for all entries. Playlist: Added
24191 IsCurrentEntryLastEntry.
24193 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
24195 * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
24196 until the pipeline got all the data it was waiting for.
24198 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
24200 * media.cpp, media.h: Add an EmitMediaOpened method and emit
24201 MediaOpened somewhat more aggressively, but only once.
24203 2008-05-05 Jeffrey Stedfast <fejj@novell.com>
24205 * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
24206 this->height for the brush size - fixes TextTransforms.xaml once
24209 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
24211 * media.cpp: Don't emit any BufferingProgressChanged events in
24214 2008-05-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
24216 * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
24217 ffmpeg won't decode any wma audio.
24219 2008-05-05 Stephane Delcroix <sdelcroix@novell.com>
24221 * shape.cpp: draw the line caps with the stretch_transform matrix.
24222 Finetune the stretch computation again.
24224 2008-05-05 Miguel de Icaza <miguel@novell.com>
24226 * src/control.cpp: Add a skeleton UserControl, to get a bit
24227 further on the loading of a Silverlight 2 application.
24229 See the TODO, there are still many limitations.
24231 2008-05-04 Larry Ewing <lewing@novell.com>
24233 * runtime.cpp: restrict invalidations to the active windowless
24236 Fixes massive drawing issues on http://my.liveatedu.com/ where
24237 were creating invalidations with a negative coords.
24239 2008-05-04 Miguel de Icaza <miguel@novell.com>
24241 * xap.cpp: Expose xap_unpack, include when Mono runtime is
24244 * deployment.cpp: Small fixups.
24246 * xaml.cpp (deploy_namespace): New namespace used to parse
24247 AppManifest.xaml files that start with a <Deployment> tag on the
24248 http://schemas.microsoft.com/client/2007/deployment namespace.
24250 (xaml_init): Register the deployment classes.
24252 * type.cpp (type_is_dependency_object): Add new helper method
24253 to determine if a Kind is a DEPENDENCYOBJECT, the list is no
24254 longer separated in value-types and DependencyObjects, so its not
24255 possible to do a fast lookup from managed code.
24257 2008-05-04 Chris Toshok <toshok@ximian.com>
24259 [ fixes #361906, while simultaneously keeping halo3,
24260 ControlLife.htm, and ControlState.htm happy ]
24262 * runtime.h, runtime.cpp, type-generated.cpp: move back to the
24263 LoadEvent instead of the broken Attaching event, reverting
24266 * panel.h, panel.cpp: add a "emitting_loaded" guard around the
24267 body of OnLoaded so we don't end up re-entering this method.
24268 Also, revert r102196 as the ordering of parent-to-child was
24269 correct originally, there were just other ordering constraints we
24272 * control.h, control.cpp: same.
24274 * dependencyobject.h, dependencyobject.cpp: add a count field to
24275 EventClosure so we can support the "only_unemitted" arg in
24276 EventObject::Emit. The idea is that the Loaded event seems to
24277 only be emitted on those events that haven't yet been emitted.
24278 This may also be implemented just by making Loaded event handlers
24279 one-shot (removing themselves after they fire), but this is easy
24280 enough and works. The only event with this odd behavior (that I
24281 know of) is Loaded.
24283 * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
24284 flag (which may actually be useless now, given the Emit change)
24285 but don't emit Loaded only when the flag is unset.
24287 * collection.cpp: remove the last bit of closure access from
24288 VisualCollection. The OnLoaded call now happens in
24289 Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
24290 spots in VisualCollection.
24292 2008-05-02 Sebastien Pouliot <sebastien@ximian.com>
24294 * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
24295 [Complete the fix for #383870]
24297 2008-05-02 Jeffrey Stedfast <fejj@novell.com>
24299 * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
24300 glyphs into account when calculating extents. Fix usage of OriginX
24301 and OriginY as far as extents goes.
24302 (Glyphs::GetOriginPoint): Don't leak the TextFont.
24303 (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
24304 RenderTransformOrigin, Microsoft's implementation for Glyphs
24305 doesn't seem to take into account the width/height of the bounding
24307 (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
24308 rather than MIN (OriginX, 0), Min (OriginY, 0)
24310 2008-05-02 Sebastien Pouliot <sebastien@ximian.com>
24312 * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
24313 [Partial fix for #383870, bounds are not always correct]
24315 2008-05-02 Jeffrey Stedfast <fejj@novell.com>
24317 * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
24318 rather than copying it from the cairo context for the same reason
24319 we did this for TextBlock segment path caching.
24321 2008-05-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
24323 * playlist.h, playlist.cpp: Implemented ClientSkip.
24324 * media.cpp: Handle playlists entry with ClientSkip set correctly.
24326 2008-05-02 Michael Dominic K. <mdk@mdk.am>
24329 * animation.h: For the KeySpline: getting rid of the ugly lookup-table
24330 with x -> y values and instead using a two-way curve approximation
24331 methodology for calculating the Spline progress. This is not 100% accurate
24332 (same as original bezier) for fine-grained values but removes all the
24333 precision problems and greatly improves the quality for long KeySpline
24334 animations (no more jags).
24336 2008-05-01 Larry Ewing <lewing@novell.com>
24338 * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
24339 invalidate here as changes in the upstream opacity could make us
24340 unable to invalidate later.
24342 Fixes invalidation of last hex in a sprawl run.
24344 2008-05-01 Larry Ewing <lewing@novell.com>
24346 * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
24347 Previously there were no time manager handlers listening to events
24348 in windowless mode so we were missing expose events. Make all
24349 invalidations go throw Invalidate so that they get picked up in
24350 windowless. Take into account that exposes go to a full size
24351 window in windowless mode so we don't need to subtract the device
24354 Fixes most of the issues with
24355 http://silverlight.r2musings.com/weatherwidget/default.aspx and
24356 fixes the harness failure on ZIndex.htm.
24358 2008-05-01 Chris Toshok <toshok@ximian.com>
24360 * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
24361 AttachingEvent, which is emitted after the toplevel control is set
24362 on the surface, but before UIElement::LoadedEvent is emitted on
24363 it. Used by the plugin for hooking up the plugin onLoad handler.
24365 2008-05-01 Jeffrey Stedfast <fejj@novell.com>
24367 * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
24368 from the cairo_t after pathing out all of the glyphs for a segment
24369 of text, keep our own moon_path for caching. Apparently the path
24370 gotten from cairo_copy_path() has whatever transforms are on the
24371 context pre-applied which is the cause for the breakage in bug
24374 * font.cpp (TextFont::AppendPath): New method to append a glyph's
24375 path to a moon_path for caching purposes.
24377 2008-04-30 Fernando Herrera <fherrera@novell.com>
24379 * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
24380 stream, fallback to http:// uri
24382 2008-04-30 Michael Dominic K. <mdk@mdk.am>
24385 * panel.h: Adding the panel_add_child helper method used by the ancient
24386 demo. It actually makes sense.
24388 2008-04-30 Michael Dominic K. <mdk@mdk.am>
24393 * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
24394 the install. This way we don't need to bundle the zip includes.
24396 2008-04-30 Stephane Delcroix <sdelcroix@novell.com>
24398 * shape.cpp: calc_line_bounds: compute the start|end caps in the
24401 2008-04-30 Sebastien Pouliot <sebastien@ximian.com>
24403 * panel.cpp: Emit Loaded on Canvas before it's child.
24404 [Fix part #361906 - i.e. back to original issue]
24406 2008-04-30 Fernando Herrera <fherrera@novell.com>
24409 * downloader.h: export downloader_get_downloaded_file without the
24412 2008-04-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
24414 * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
24415 correctly, and calculate file duration as MS seems to be doing it.
24416 SkipFrame: when seeking don't take into account the size of the
24417 mpeg header, since we only peaked it.
24419 2008-04-29 Michael Dominic K. <mdk@mdk.am>
24421 * shape.cpp: Clipping is not taken into account with cairo_in_*
24422 functions therefore do the hit-test in two steps -- first check if
24423 within clipping bounds and then check if within shape bounds. Fixes
24424 #383894 and test-shape-cursor-clipping.xaml test.
24426 2008-04-28 Chris Toshok <toshok@ximian.com>
24428 * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
24429 before we emit our own Load event (and trigger the plugin's onLoad
24432 2008-04-28 Chris Toshok <toshok@ximian.com>
24434 * runtime.cpp (Surface::Attach): always emit Resize on Attach.
24435 fixes ControlState.htm.
24437 2008-04-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24439 * typegen/typegen.cs: Minor fix to support C constructors immediately
24441 * type-generated.cpp: Regenerated (includes a lot more C constructors
24444 2008-04-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
24446 * geometry.h: Include glib.h before using glib macros.
24448 2008-04-28 Michael Dominic K. <mdk@mdk.am>
24450 * xaml.cpp: Silently skip the attributes that are empty instead of
24451 throwing an error. Fixes the test-parser-empty-property.xaml and
24454 2008-04-28 Michael Dominic K. <mdk@mdk.am>
24456 * brush.cpp: Make sure to use proper width for image stretching params.
24457 Fixes the image-brush-stretch-set.html and bug #383938.
24459 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
24461 * shape.cpp: Added property accessors.
24463 2008-04-25 Chris Toshok <toshok@ximian.com>
24465 * type-generated.cpp: add the Surface Loaded event.
24467 * runtime.cpp (Surface::widget_destroyed): null out s->widget if
24468 it matches too. no more dangling pointers.
24470 * runtime.h, runtime.cpp: give the Surface class a Load
24471 event (used to run the JS OnLoad event in the plugin) and an
24474 * xaml.cpp (dependency_object_hookup_event): raise a parser error
24475 if an event is specified with a javascript: prefix.
24477 2008-04-25 Larry Ewing <lewing@novell.com>
24479 * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
24480 changed logic inside a type check.
24482 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
24484 * xaml.cpp (geometry_from_str): Use the new gemoetry property
24487 * geometry.cpp: Added property accessor methods
24489 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
24491 * media.cpp: Always emit DownloadProgressEvents, even if we're
24494 2008-04-25 Stephane Delcroix <sdelcroix@novell.com>
24496 * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent
24497 method, so the Canvas.Top, Canvas.Left properties are read. Fixes
24500 2008-04-25 Geoff Norton <gnorton@novell.com>
24502 * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: Support using ffmpeg's
24503 new libavcodec/avcodec.h
24505 2008-04-25 Jeffrey Stedfast <fejj@novell.com>
24507 * runtime.cpp (runtime_init): No longer need to call
24508 assembly_part_init().
24510 * deployment.cpp (assembly_part_init): Moved into
24513 * deployment.h: Added missing virtual dtors.
24515 * collection.cpp (Collection::GetCount): Added.
24517 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
24519 * media.cpp: Set DownloadProgress to 0 when media fails to load.
24521 2008-04-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
24523 * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
24524 stream, emit it even if we missed it by up to 0.1 s. Refactored
24525 parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
24526 after we've either started playing or finished buffering. Emit
24527 MediaFailed/InvalidFileFormat if we failed to initialize the media.
24528 Reinitialize the media synchronously in SetSource.
24531 2008-04-25 Michael Dominic K. <mdk@mdk.am>
24535 * uielement.h: Also include the IsHitTestVisible status when checking
24536 our input_list after handling the mouse event. This fixes the
24537 mouse-enter-leave-hit-test-visibility.html test.
24539 2008-04-25 Stephane Delcroix <sdelcroix@novell.com>
24541 * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
24543 2008-04-24 Jeffrey Stedfast <fejj@novell.com>
24545 * clock.cpp: Added property accessor methods for TimelineMarker
24546 and added c-bindings.
24548 * downloader.cpp: Same.
24550 * media.cpp: Added property accessors so that it isn't
24551 necessary to use long-winded c-function names to get property
24552 values. Also made all c-wrappers call the c++ property accessor
24555 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24557 * mplayer.cpp: When a video-only media reaches its end, set target_pts
24558 to the last rendered pts, since that's what is reported as our
24561 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24563 * mplayer.cpp: When a video-only media reaches its end, set target_pts
24564 to the last rendered pts, since that's what is reported as our
24567 2008-04-24 Michael Dominic K. <mdk@mdk.am>
24571 * uielement.h: Renaming UIElement::GetActualRenderVisibility to
24572 UIElement::GetActualTotalRenderVisibility for better name matching.
24574 2008-04-24 Michael Dominic K. <mdk@mdk.am>
24576 * runtime.cpp: Another perf fix for the fix -- make it a corner case
24577 when the new_input_list needs to be copied. In most cases we can just
24580 2008-04-24 Michael Dominic K. <mdk@mdk.am>
24584 * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
24585 the perf/sanity point of view. Here goes a better refactor.
24587 Adding UIElement::GetActualRenderVisibility which returns the visibility
24588 (like UIElement::ComputeTotalRenderVisibility) without setting the
24591 2008-04-24 Michael Dominic K. <mdk@mdk.am>
24593 * runtime.cpp: After emitting the events make sure to update our
24594 input_list since it can be changed -- as a result of somebody ie.
24595 changing element's visibility in the enter/leave callback. Fixes the
24596 #375220 (Microsoft downloads index chars).
24598 2008-04-24 Michael Dominic K. <mdk@mdk.am>
24600 * animation.cpp: Do a slightly more precise generation of key-spline
24601 tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
24603 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24605 * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
24606 and raise MediaFailed.
24608 2008-04-24 Stephane Delcroix <sdelcroix@novell.com>
24613 * shape.h: override some Compute[Shape]Bounds method to pass a matrix
24614 argument. Allows measuration of transformed Pathes and a 2nd pass to
24615 refines the guesses we're doing for Stretches.
24617 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24619 * src.mdp: Updated.
24621 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24623 * media.cpp, pipeline.cpp, pipeline.h: Addded
24624 ProgressiveSource::NotifyFinished to notify that the download has
24625 finished. This is required for streaming downloads which download 0
24626 bytes, otherwise the pipeline will hang waiting for data.
24628 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24630 * collection.cpp, collection.h: TimelineMarkerCollection needs to be
24631 sorted at all times, added a virtual Collection::AddToList method
24632 which appends the item to the list (and overriden by
24633 TimelineMarkerCollection to add it in the correct position to keep
24634 the collection ordered).
24636 2008-04-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
24638 * clock.cpp, clock.h: Added property accessors to TimelineMarker.
24640 2008-04-23 Jeffrey Stedfast <fejj@novell.com>
24642 * panel.cpp: Add property accessors and added c-bindings.
24644 2008-04-23 Geoff Norton <gnorton@novell.com>
24646 * Makefile.am: Fix make dist when building with ffmpeg.
24648 2008-04-23 Jeffrey Stedfast <fejj@novell.com>
24650 * frameworkelement.cpp: Added property accessors so that it isn't
24651 necessary to use long-winded c-function names to get property
24652 values. Also made all c-wrappers call the c++ property accessor
24655 * text.cpp: Added property accessors to all text classes so that
24656 it isn't necessary to use long-winded c-function names to get
24657 property values. Also made all c-wrappers call the c++ property
24659 (TextBlock::LayoutSilverlight): Removed, logic moved into
24662 * animation.h: Make sure all c-API _new() functions take void as
24665 * uielement.cpp: Added some property accessors.
24667 * text.cpp: Use the new SolidColorBrush ctor.
24669 * brush.cpp: Added property accessors to all brush classes so that
24670 it isn't encessary to use long-winded c-function names to get
24671 property values. Also made all c-wrappers call the c++ property
24673 (SolidColorBrush::SolidColorBrush): New .ctor to make life
24676 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
24678 * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
24679 MediaPlayer with a negative pts.
24681 2008-04-23 Geoff Norton <gnorton@novell.com>
24683 * libmoon.h: Drop mango.h
24685 2008-04-23 Geoff Norton <gnorton@novell.com>
24687 * runtime.cpp: Remove pango support.
24689 2008-04-23 Geoff Norton <gnorton@novell.com>
24691 * Makefile.h, text.cpp, text.h, mango.cpp, mango.h: Remove pango
24694 2008-04-23 Geoff Norton <gnorton@novell.com>
24696 * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
24697 include swscale and ffmpeg cpp files in the build if their configure
24700 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
24702 * type.cpp: When looking for types use case-insensitive type
24703 comparison. Fixes #375230 and #375231.
24705 2008-04-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
24707 * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
24708 don't take a ref to the context, and add a context_refcounted field
24709 to keep track of refcounting. This is required for long-living
24710 closures which would otherwise cause circular references. Add and
24711 implemetn a ASFMarkerDecoderInfo class, and implement notification
24712 of found markers back to listeners.
24713 * src.mdp: Updated.
24714 * downloader.cpp, downloader.h: Downloader: Add a streaming_features
24715 field, so that the plugin can return information about mms streams.
24716 * http-streaming.cpp, http-streaming.h: Added
24717 parse_http_streaming_features.
24718 * mplayer.h: Add property accessors for CanSeek and CanPause, and
24719 implement them. Select any marker streams.
24720 * media.h, media.cpp: MediaElement: store the marker closure in the
24721 instance, so that we can delete it upon destruction. Read the
24722 streaming features from the downloader in order to set
24723 CanSeek/CanPause properly. TryOpen: if we don't have a filename,
24724 but we do have a downloaded file, use the downloaded file as the
24725 source (might happen if streaming stops before TryOpen is called).
24726 * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
24727 implement them. Select any marker streams. Don't check if we can
24728 pause in Pause (), since MediaElement implements Buffering calling
24729 Pause on us. MediaElement is already checking if media can be
24731 * Makefile.am: Added http-streaming.h|cpp.
24733 2008-04-22 Stephane Delcroix <sdelcroix@novell.com>
24735 * rect.h: overrides for Union and IsEmpty to take a logical bool,
24736 allowing logical bounds computation.
24737 * geometry.cpp: use the overrided Union () in Computebounds
24738 * shape.cpp: This is the stretches' Holy Grail !
24740 2008-04-22 Jeffrey Stedfast <fejj@novell.com>
24742 * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
24743 event->device non-NULL.
24745 2008-04-22 Larry Ewing <lewing@novell.com>
24747 * playlist.h: remove expat references from public symbols.
24748 * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
24749 from the plublic headers.
24751 Start cleaning things up for ff3.
24753 2008-04-22 Chris Toshok <toshok@ximian.com>
24755 * runtime.h, runtime.cpp: add Zombify() which sets the zombie
24756 flag. basically this allows us to unwind gracefully from an event
24757 that has caused the surface to be destroyed. when the flag is
24758 set, we basically stop emitting UI events that we're in the
24759 process of emitting.
24760 (Surface::widget_destroyed) simplify this, and zero out the
24761 widgets here so we don't destroy them again in ~Surface().
24763 * dependencyobject.h, dependencyobject.cpp: make unref_delayed
24764 public again, and don't warn about calling it on the main thread.
24765 we need it in the plugin.
24767 2008-04-22 Jeffrey Stedfast <fejj@novell.com>
24769 * shape.cpp (Shape::DoDraw): Cast extents to int for
24770 AddToCacheSizeCounter().
24771 (Shape::IsCandidateForCaching): Same for
24772 VerifyWithCacheSizeCounter().
24774 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24776 * animation.cpp: Safely allow now the KeyTime property to be nullable.
24777 Fixes the Animation_NegativeTst.htm test.
24779 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24782 * animation.h: Making the Storyboard::Begin return bool (true if
24783 storyboard started correctly, false otherwise).
24785 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24790 * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
24791 to validate the Timeline before starting it. Timelines are always valid
24792 by default except for KeyFrame-based animations where we perform a
24793 check on the keyframes.
24795 Storyboard doesn't start if any of it's timelines are not valid. This
24796 fixes the test-animation-invalid-keyframe-keytime.xaml test.
24798 2008-04-22 Michael Dominic K. <mdk@mdk.am>
24800 * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
24801 value, make it be NULL by default. This currently causes a segfault in
24802 the just-added test-animation-invalid-keyframe-keytime.xaml which is
24805 2008-04-22 Fernando Herrera <fherrera@novell.com>
24808 * pipeline.cpp: set the new read position after Seeking to pts.
24809 Added ProgressiveSource::SeekInternal that refuses to Seek to a
24810 non-filled position.
24812 2008-04-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
24814 * dependencyobject.cpp, dependencyobject.h: Added another SetValue
24815 overload, to enable calling all SetValues with stack objects.
24816 * xaml.cpp: Fix a Value leak.
24818 2008-04-21 Jeffrey Stedfast <fejj@novell.com>
24820 Fixes a double-destroy bug in FullScreen.htm
24822 * runtime.cpp (Surface::Surface): Initialize normal_widget - never
24823 let it be NULL unless we are in windowless mode.
24824 (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
24825 'widget_normal' instead, this way we can't accidently destroy the
24826 fullscreen widget twice (e.g. if we are in fullscreen mode).
24827 (Surface::ConnectEvents): Record the unrealize signal id so that
24828 we can later disconnect from it.
24829 (Surface::DestroyWidget): Now takes a SignalIds argument so that
24830 we can disconnect from unrealize/destroy signals which may fire in
24831 response to destroying the widget.
24832 (Surface::InitializeWidget): Now takes a SignalIds argument so
24833 that we can save the destroy signal id.
24835 2008-04-21 Geoff Norton <gnorton@novell.com>
24837 * runtime.cpp: Guard against freeing a list in a sub-event
24838 loop when crossings are invoked. Fixes bug#378902
24840 2008-04-20 Miguel de Icaza <miguel@roxanne.site>
24842 * deployment.cpp: new dependency property objects for the
24845 * xap.cpp: XAP loader, unpacks and instantiates deployment, but
24846 does not load assemblies in VM. Not sure if this should be done
24847 here (and add a VM dependency) or in the plugin and later as well
24850 * runtime.cpp: Deployment initialization.
24852 * downloader.cpp Moved some code from here into utils.cpp: Expose
24853 CreateTempDir instead of MakeTempDir that takes care of creating
24854 the directory with a unique signature.
24856 2008-04-21 Geoff Norton <gnorton@novell.com>
24858 * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
24859 to the C implementation.
24861 2008-04-18 Larry Ewing <lewing@novell.com>
24863 * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
24864 changes invalidate our parents bounds to notify them that their
24865 subtree may have changed.
24867 Fixes the status boxes on MouseInput.htm
24869 2008-04-18 Jeffrey Stedfast <fejj@novell.com>
24871 * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
24872 and focus-out-event.
24873 (Surface::focus_in_callback): If we have a toplevel canvas, emit a
24874 GotFocus event on it.
24875 (Surface::focus_out_callback): If we have a toplevel canvas, emit
24876 a LostFocus event on it.
24877 (Surface::Attach): If our widget has focus, emit GotFocus event on
24878 our canvas right after we emit the Loaded event.
24880 * uielement.cpp (UIElement::EmitGotFocus): New method.
24881 (UIElement::EmitLostFocus): New method.
24883 2008-04-18 Geoff Norton <gnorton@novell.com>
24885 * yuv-converter.cpp: It seems that ffmpeg will occasionally
24886 over-pad the YUV buffers with a SIMD aligned amount (see
24889 2008-04-18 Michael Dominic K. <mdk@mdk.am>
24891 * animation.cpp: Make sure we always return targetValue when
24892 progress >= 1.0 for Spline*KeyFrame's.
24894 This fixes the clock36.xaml test and PopFly bug of "line dirt
24895 leftovers" when collapsing block list or tutorial list.
24897 2008-04-17 Larry Ewing <lewing@novell.com>
24899 * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
24901 2008-04-17 Larry Ewing <lewing@novell.com>
24903 * src/eventargs.cpp:
24905 * src/type-generated.cpp:
24906 * src/value.h: add a default ctor for MouseEventArgs.
24908 2008-04-17 Larry Ewing <lewing@novell.com>
24910 * typegen/typegen.cs: don't require an svn repo for proper
24911 functioning, try to make the error messages functional still.
24913 2008-04-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
24915 * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
24916 before trying to play/pause, otherwise nothing will happen (if
24917 coming from the Opening state). Fix printf.
24919 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24921 * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
24922 for DependencyProperty, if a property has this flag, it will always
24923 be changed, even if the new value is the same as the old value.
24924 DependencyObject::SetValue: honor the new always_change flag.
24925 * media.cpp: Set the always_change flag to true for
24926 MediaBase::SourceProperty.
24928 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24930 * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
24931 MediaOpened, so that it also happens when TryLoadFinished opens the
24932 media. Fixes media not starting to play when the media was
24933 downloaded between the moment we tried to open it and it was
24934 successfully opened.
24936 2008-04-17 Jeffrey Stedfast <fejj@novell.com>
24938 * color.cpp (color_from_str): Handle uint32 color values that are
24941 2008-04-17 Larry Ewing <lewing@novell.com>
24943 * dependencyobject.cpp (DependencyProperty::DependencyProperty):
24944 initialize is_nullable.
24946 Fixes random failure of ParserErrors.htm.
24948 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24950 * media.cpp: MediaElement::TryOpen: always unref the FileSource we
24951 create when we're done with it.
24953 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24955 * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
24956 remember how many events the current type has, since in our
24957 destructor we can't get that information anymore. Add a new
24958 EventLists class which does the book-keeping.
24960 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24962 * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
24963 in the destructor. MediaElement::SetMedia: call ComputeBounds at
24964 the end. Fixes xaml/test-canvas-no-size.html
24966 2008-04-17 Michael Dominic K. <mdk@mdk.am>
24968 * animation.cpp: It turns out that KeyFrames doesn't have default Value
24969 of NULL but rather 0/Black/etc.
24971 This fixes the the test-animation-null-defaults-*.xaml tests and the bug
24972 in PopFly where clicking the block list collapser wouldn't do anything
24973 (it collapses now properly like the tutorial right pane).
24975 2008-04-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
24977 * src.mdp: Updated.
24979 2008-04-16 Larry Ewing <lewing@novell.com>
24981 * type.cpp: avoid an infinite recursion in LookupEvent.
24983 Fixes a crash in RuntimeErrors.htm.
24985 2008-04-16 Larry Ewing <lewing@novell.com>
24987 * shape.cpp (Shape::ComputeStretchBounds): get another test working.
24989 2008-04-16 Larry Ewing <lewing@novell.com>
24991 * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
24992 try to resolve the regression in stretch that had crept in. Still
24993 working on a more complete patch.
24995 2008-04-16 Larry Ewing <lewing@novell.com>
24997 * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
25000 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
25002 * dependencyobject.cpp (free_value): value argument may be NULL.
25004 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25006 * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
25007 decreasing refcount, so that ref in event emission doesn't abort.
25008 Reenable ref/unref in event emission.
25010 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
25012 * dependencyobject.cpp (set_surface): value argument can be NULL.
25013 (DependencyObject::IsValueValid): Fixed compile warnings.
25015 * downloader.cpp: Properly set/reset Status and StatusText
25017 (Downloader::Open): Properly reinitialize all state.
25018 (Downloader::Write): Clamp progress to 1.0 (altho it should never
25019 go above, especially not that I've fixed resetting 'total' state).
25021 * enums.c (initialize_enums): Don't cast arrays using
25022 GINT_TO_POINTER(), doesn't make any sense.
25024 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25026 * collection.cpp: Collection::EmitChanged: don't create a
25027 ChangeEventArgs if we don't need one, and unref it when we're
25030 2008-04-16 Michael Dominic K. <mdk@mdk.am>
25032 * clock.cpp: Add protection against division by 0.
25034 2008-04-16 Michael Dominic K. <mdk@mdk.am>
25037 * animation.h: Don't detach the ClockGroup from parent on the Completed
25038 event. This is now finally no longer needed. While keeping the
25039 clockgroup means little perf difference it makes the whole thing much
25040 more simple to read (there is just one place that explains why Filling
25041 groups are no longer processed after Completed).
25043 2008-04-16 Larry Ewing <lewing@novell.com>
25045 * shape.cpp: tweak the origin tweak again. This should pass
25046 test-shape-path-stretch[34].xaml.
25048 2008-04-16 Jeffrey Stedfast <fejj@novell.com>
25050 Fix for OMPackagingSource.htm
25052 * media.cpp (MediaElement::OnPropertyChanged): If the new source
25053 is empty, Invalidate().
25054 (MediaElement::Render): Render nothing if our downloader is NULL.
25056 2008-04-16 Larry Ewing <lewing@novell.com>
25058 * shape.cpp: don't adjust the origin unless we are adjusting that
25061 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25063 * playlist.cpp: Simplify printf.
25065 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25067 * src.mdp: Updated to (mostly) compile.
25069 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25071 * src.mdp: Updated.
25073 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25075 * typegen/typegen.sh: Updated to work correctly independently of
25076 the current directory when executed.
25078 2008-04-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
25080 * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
25081 collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
25082 downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
25083 type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
25084 uielement.cpp, uielement.h: Initialize our type system statically.
25085 * dependencyobject.cpp: Initialize our type system statically. Comparing a
25086 Kind value to another to determine type hierarchy isn't supported
25087 anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
25089 * src.mdp: Updated.
25090 * type.cpp.in: Removed, no longer required.
25091 * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
25092 determine type hierarchy isn't supported anymore, use Value::Is or
25093 Type::IsSubclassOf, which are doing the right thing.
25095 2008-04-16 Larry Ewing <lewing@novell.com>
25097 * shape.cpp (Shape::ComputeStretchBounds): fix typo.
25099 2008-04-16 Larry Ewing <lewing@novell.com>
25101 * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
25102 that got accidentally lost when fixing other bits.
25104 Fixes regression in StretchAndShapes.xaml.
25106 2008-04-16 Jackson Harper <jackson@ximian.com>
25108 * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
25109 we need to check if the property is Nullable and raise an error if
25112 2008-04-16 Jackson Harper <jackson@ximian.com>
25114 * dependencyobject.h|cpp: SetValue now validates values and
25115 returns false with a GError when invalid values are used.
25116 Subclasses can (and should) override IsValidValue to do their own
25118 * xaml.cpp: Use new SetValue that returns errors.
25120 2008-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
25122 * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
25123 don't have a surface anymore. We're probably executing after the surface
25124 has been destroyed.
25126 2008-04-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
25128 * src.mdp: Updated to include typegen/*.
25129 * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
25130 Behaviour/Behavior inconsistency.
25132 2008-04-15 Jeffrey Stedfast <fejj@novell.com>
25134 * media.cpp (MediaElement::OnPropertyChanged): Moved the
25135 PositionProperty seek logic into here so we could get rid of
25136 MediaElement::SetValue() overload.
25138 * dependencyobject.h (class DependencyObject): SetValue() is no
25139 longer a virtual method.
25141 2008-04-15 Michael Dominic K. <mdk@mdk.am>
25143 * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
25146 2008-04-15 Michael Dominic K. <mdk@mdk.am>
25148 * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio
25149 into account also when moving back in time.
25151 Fixes the clock34.xaml test.
25153 2008-04-15 Michael Dominic K. <mdk@mdk.am>
25155 * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
25156 calculating it ourselves (instead of using the CalcProgress). Otherwise
25157 we're bypassing the clamping and extending animations/values beyond
25160 This is a real fix for the Popfly #378390 (cannot configure the box in
25161 Popfly). Also fixes the clock34.xaml test-case.
25163 2008-04-15 Michael Dominic K. <mdk@mdk.am>
25165 * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
25166 when previous OR current state is Clock::Active.
25168 2008-04-15 Michael Dominic K. <mdk@mdk.am>
25170 * clock.cpp: Reverting the change that was supposed to fix popfly. It's
25171 actually totally bad. I knew I was too fast with this one.
25173 2008-04-15 Michael Dominic K. <mdk@mdk.am>
25175 * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
25176 configure the box in Popfly). Whoah, that was a nasty one.
25178 2008-04-14 Chris Toshok <toshok@ximian.com>
25180 * runtime.cpp (Surface::Attach): don't clear the up/down dirty
25181 lists here. Calling toplevel->SetSurface(NULL) ensures that all
25182 elements from the previous tree have their dirty elements removed,
25183 so what's left will correspond to 1) things that are about replace
25184 the current hierarchy, or 2) things that haven't actually been
25185 added to the hierarchy yet, but need to be associated with a
25188 * collection.cpp (Collection::Clear): emit
25189 CollectionChangeTypeChanging event before we do the actual change
25190 so the owner can do something with the children if it needs to.
25191 (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
25193 (VisualCollection::Add): remove call to VisualAdded. that
25194 behavior will be handled by Panel in its OnCollectionChanged
25196 (VisualCollection::SetVal): same.
25197 (VisualCollection::Insert): same.
25198 (VisualCollection::Remove): same, but with VisualRemoved.
25199 (VisualCollection::RemoveAt): same.
25200 (VisualCollection::Clear): remove the loop calling VisualRemoved.
25201 this will be handled by the additional
25202 CollectionChangeTypeChanging handling in panel.cpp.
25204 * enums.h (enum CollectionChangeType): add
25205 CollectionChangeTypeChanging.
25207 * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
25208 where the ChildrenProperty is changed, by calling ChildRemoved on
25209 all the old children, and ChildAdded on all the new ones.
25210 (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
25211 (Panel::ChildRemoved): new home for
25212 VisualCollection::VisualRemoved.
25213 (Panel::OnCollectionChanged): add support for
25214 CollectionChangeTypeChanging, so we can remove all children. this
25215 change type is generated by Collection::Clear.
25217 * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
25218 CollectionChangeTypeChanging.
25219 (InkPresenter::OnCollectionChanged): same.
25221 2008-04-14 Jeffrey Stedfast <fejj@novell.com>
25223 * media.cpp (Image::CreateSurface): Robustification of image
25226 2008-04-14 Michael Dominic K. <mdk@mdk.am>
25229 * clock.h: When calculating the new time in DoRepeat use modulo on new
25230 value. Otherwise we're 'losing' a little bit of time on every repeat and
25231 end time doesn't match with parent. This fixes a few more "jags" on
25232 animations ie. clock13.xaml.
25234 2008-04-11 Larry Ewing <lewing@novell.com>
25236 * xaml.cpp (value_from_str): make sure we propogate the error if
25237 color_from_string returns NULL.
25239 * color.cpp (color_from_str): return NULL on invalid color values
25240 rather than simply returning black.
25242 Add an error condition to color_from_string so that we pass the
25243 color tests in ParserErrors test.
25245 2008-04-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25247 * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
25249 2008-04-11 Jeffrey Stedfast <fejj@novell.com>
25251 * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
25254 * downloader.cpp (Downloader::Send): Use
25255 TimeManager::InvokeOnMainThread() here like Rolf did in
25256 MediaBase. Simplifies things by not needing a surface.
25258 * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
25259 object as opposed to a DependencyObject.
25261 2008-04-11 Michael Dominic K. <mdk@mdk.am>
25263 * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
25264 we go Filling/Stopped. Without this we never "finish off" our animations
25265 and depending on the framerate we get "jags". Fixes the clock32.xaml
25268 2008-04-11 Jeffrey Stedfast <fejj@novell.com>
25270 * runtime.cpp: Make the dot and eraser cursors const to avoid
25273 2008-04-11 Michael Dominic K. <mdk@mdk.am>
25275 * enums.c: Removing bolox comment and behavior. Always return -1 on
25278 * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
25279 Should make it a little bit easier to spot problems.
25281 2008-04-11 Michael Dominic K. <mdk@mdk.am>
25283 * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
25284 actually recursive (I'm not sure why this was commented out? Toshok?).
25285 Fixes the sprawl end-game animation, #378748.
25287 2008-04-11 Stephane Delcroix <sdelcroix@novell.com>
25289 * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes
25290 bnc #375213. Implemented the MouseCursorNone too.
25292 2008-04-10 Larry Ewing <lewing@novell.com>
25294 * xaml.cpp (start_element): throw an error if there is an xml
25295 attribute on a dependency property.
25297 2008-04-10 Larry Ewing <lewing@novell.com>
25299 * enums.c (enum_from_str): return -1 on an invalid enum string so
25300 that we can catch it as a ParserError fixes
25301 Parser_Invalid_Enum.xaml.
25303 2008-04-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
25305 * media.cpp: MediaBase::SetSource: no need to get a
25306 Surface/TimeManager instance to do an asynchronous call, just
25307 call TimeManager::InvokeOnMainThread.
25309 2008-04-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
25311 * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
25312 by the audio thread when the audio finishes.
25314 * media.h, media.cpp: Added MediaElement::AudioFinished, called by
25315 the media player when the audio finishes. Enables us to raise
25316 MediaEnded for audio-only media.
25318 2008-04-10 Jeffrey Stedfast <fejj@novell.com>
25320 * brush.cpp|media.cpp: All SetSource() entry points now take
25321 Downloader objects rather than DependencyObject arguments - the
25322 same as MSDN defines.
25324 * media.cpp (SetSourceInternal): More cleanup /
25325 simplification. Since *::SetSource() already takes steps to be
25326 async, no need to use Downloader::Send() which would introduce
25327 another delay in downloading. It should be plenty safe to call
25328 Downloader::SendNow() in all ::SetSourceInternal()
25329 implementations. Also, we now need to handle NULL downloader which
25330 we get called with if the original SetSource() was passed a NULL
25332 (Image::SetSource): Don't cleanup the surface here, do that in
25333 SetSourceInternal() so that we delay until appropriate.
25334 (Image::SetSourceInternal): If there is a downloader, delay
25335 CleanupSurface() even longer until the new image has been
25337 (Image::DownloaderComplete): Call CleanupSurface() here.
25339 2008-04-10 Jeffrey Stedfast <fejj@novell.com>
25341 * media.cpp: Consolidated Image and MediaElement downloader bits
25342 by putting them into MediaBase.
25344 2008-04-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
25346 * dependencyobject.cpp: Guard against calling closures which have
25347 been removed during emission of previous events in the same
25348 event list: when we're emitting and a closure is removed, mark
25349 the closure as pending removal, don't call it anymore, and only
25350 remove it when we're finished emitting.
25352 * dependencyobject.h: Guard against calling closures which have
25353 been removed during emission of previous events in the same
25356 2008-04-10 Michael Dominic K. <mdk@mdk.am>
25360 * media.cpp: A straight-forward fix for "gray flashes" in comic and
25361 slideshow (#375275). It's circumventing a change to make downloaders
25362 async for Image. Jeff, maybe you can figure more?
25364 (The commit that broke the the slideshow was r99065, Jeff from
25367 2008-04-10 Michael Dominic K. <mdk@mdk.am>
25369 * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
25370 Showcase and test-shape-path-stretch2.xaml.
25372 2008-04-09 Chris Toshok <toshok@ximian.com>
25374 * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
25375 is invalid, as root_2 might be.
25377 2008-04-09 Chris Toshok <toshok@ximian.com>
25379 [ Fixes some odd behavior in
25380 http://www.thedatafarm.com/silverink/, and also fixes bug
25383 * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
25384 intersect the expose region with our RenderBounds, not our normal
25385 Bounds. This forces us to add the ink presenter to the render
25386 list even when the exposed area is just going to redraw a stroke,
25387 not the actual canvas rectangle. When we go to subtract, however,
25388 we still only subtract the canvas rectangle.
25390 * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
25391 stroke collection's bounds as well as the new stroke collection's
25393 (InkPresenter::OnCollectionChanged): when the collection has
25394 changed, we can't just use Invalidate() since that only
25395 invalidates the canvas bounds. We need to invalidate our render
25396 bounds to get rid of strokes that are outside the canvas bounds.
25397 Also, make sure to also invalidate the new bounds of the stroke
25398 collection (it will usually be empty, but do it anyway).
25399 (InkPresenter::ComputeBounds): add logic to compute the
25400 render_bounds here.
25401 (InkPresenter::GetRenderBounds): new method.
25403 * stylus.h (class InkPresenter): add GetRenderBounds, and also add
25404 an OnPropertyChanged method so we can deal with the stroke
25405 collection being assigned to something else.
25407 * uielement.h (class UIElement): as much as I hate to do this, add
25408 yet another type of bounds (RenderBounds). this is only here for
25409 the special case of the inkpresenter, which has the normal canvas
25410 bounds (the rectangle), the subtree bounds (which unions the
25411 canvas bounds with the bounds of strokes and children) and render
25412 bounds (which unions canvas bounds and stroke bounds.)
25414 2008-04-09 Jeffrey Stedfast <fejj@novell.com>
25416 * dependencyobject.cpp (resolve_property_path): Alias TextElement
25417 to TextBlock to work around some buggy beta versions of Blend.
25419 2008-04-09 Stephane Delcroix <sdelcroix@novell.com>
25421 * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
25422 the logical/shape bounds diff stays the same. It's IMHO as close as we
25423 can go without drawing and recalculating.
25425 2008-04-08 Jeffrey Stedfast <fejj@novell.com>
25427 * xaml.cpp: Cleaned up some of the debugging printf's and and
25428 wrapped them in d() to declutter console spewage when unneeded.
25429 (xaml_create_from_str): ctype functions take int arguments, where
25430 normal char values are in the range 0-255 - in order to work with
25431 non-GNU, need to cast from char to unsigned char.
25433 * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
25434 initializer stuff to be consistent with other classes.
25436 2008-04-08 Sebastien Pouliot <sebastien@ximian.com>
25438 * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks
25441 2008-04-08 Michael Dominic K. <mdk@mdk.am>
25444 * clock.h: SkipToFill the automatic duration clock groups except if
25445 this is the root of all roots clock (the TimeManager's clock). Due to
25446 the idle_hint optimization, we don't process those clocks anyways.
25448 2008-04-08 Michael Dominic K. <mdk@mdk.am>
25453 * dependencyobject.cpp:
25454 * dependencyobject.h: Making sure that each property is animated only by
25455 a single animation at a time (the last one started).
25456 From Silverlight forums:
25458 "Keep in mind Silverlight only supports a single animation on a
25459 property at a time, so if you begin multiple animations on the same
25460 property, the last one will prevail."
25462 This prevents us from overriding Filling/HoldEnd animations by sb's
25465 The implementation is: for each prop we create a hash table (when
25466 needed) which stores objects (keys) + last AnimationStorage attached
25467 (values). When new AnimationStorage is attached to a prop, the last one
25468 is notified to stop updating the target (we don't touch the clock
25469 structure). And then there is some magic to handle destroy's etc.
25471 This fixes PopFly mouse enter/leave problems in the toolbox and the
25472 http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
25473 problems. Fixes #375231, #362363.
25475 2008-04-07 Jeffrey Stedfast <fejj@novell.com>
25477 Fixes needed for Zombomatic
25479 * downloader.cpp (Downloader::GetDownloadedFilePart): When
25480 creating the full pathname for parts we are extracting, convert
25481 everything to lowercase since we need to treat archived filenames
25482 case-insensitively.
25483 (Downloader::GetUnzippedPath): Convert filenames from the zip
25484 archive to lowercase so that it is easier for us to find them
25485 case-insensitively on the filesystem once they are extracted.
25487 2008-04-07 Sebastien Pouliot <sebastien@ximian.com>
25489 * xaml.cpp: Fix parsing properties by ensure they start with the
25490 element name (and not something else). Fix crasher.
25492 2008-04-07 Michael Dominic K. <mdk@mdk.am>
25495 * src/shape.h: Compute the origin point as a separate step after
25496 computing the shape bounds and the stretch bounds. This fixes the
25497 recently broken sprawl.
25499 I think it also fixes other things. Before, given the way code was,
25500 the stretch_bounds would affect the origin *only* in the case of Path,
25501 in other cases (Line, Polygon, Polyline...) they would be ignored.
25503 2008-04-04 Chris Toshok <toshok@ximian.com>
25505 * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method. it
25506 was missing a bunch of tests (basically it was intersecting
25507 infinite lines with ellipses, not segments), and some of the math
25510 2008-04-04 Jeffrey Stedfast <fejj@novell.com>
25512 Intended to fix bug #373462, but something else is preventing that
25513 site from working now...
25515 * media.cpp (MediaElement::SetSourceInternal): PartName is no
25516 longer a const char * argument, which means we take ownership of
25517 the PartName string.
25518 (MediaElement::SetSourceAsyncCallback): New method which is the
25519 async callback for SetSource().
25520 (MediaElement::SetSource): Reinitialize() right away.
25521 (MediaElement::SetSource): Clear out any pending SetSource async
25522 data, replacing it with the new downloader/part name info.
25523 (MediaElement::SetSource): Allow a NULL downloader object but make
25524 sure we don't crash in that case either.
25526 2008-04-04 Sebastien Pouliot <sebastien@ximian.com>
25528 * dependencyobject.cpp (resolve_property_path): Avoid crash on
25529 invalid syntax and leaks in other error cases. Fix #377039 (more
25530 test cases coming soon).
25532 2008-04-04 Jeffrey Stedfast <fejj@novell.com>
25534 * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
25535 immediately if the array len is 0, prevents a crash accessing
25536 sorted_list->pdata[0] when working backwards in the second
25537 for-loop. Fixes one of the crashes I found while investigating bug
25540 2008-04-04 Sebastien Pouliot <sebastien@ximian.com>
25542 * runtime.cpp: Don't crash in strcase_hash if the hashtable
25543 contains NULL values.
25545 2008-04-03 Chris Toshok <toshok@ximian.com>
25547 * runtime.cpp (Surface::InitializeWidget): disable the
25548 GDK_POINTER_MOTION_HINT_MASK stuff for now. we're not passing
25549 tests with it enabled.
25550 (Surface::motion_notify_callback): force the emission of a motion
25553 2008-04-03 Jeffrey Stedfast <fejj@novell.com>
25555 * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
25556 the pencil cursor. Also updated Hand (which should be a
25557 left-pointing hand, not right-pointing) and also Eraser (we need
25558 to make our own icon for this, but I suck at art so I'll pass for
25561 2008-04-03 Michael Dominic K. <mdk@mdk.am>
25564 * shape.h: Calculate the logical extents when computing the shape bounds
25565 and pass them to the ComputeStretchBounds. They're currently not used in
25568 2008-04-03 Michael Dominic K. <mdk@mdk.am>
25570 * shape.cpp: Don't init the stretch matrix to identity on each
25571 Shape::ComputeShapeBounds. We want to be able to call it freely.
25573 2008-04-02 Michael Dominic K. <mdk@mdk.am>
25575 * geometry.cpp: Use the cairo_path_extents to calculate the logical
25576 bounds instead of faking small stroke.
25578 2008-04-02 Michael Dominic K. <mdk@mdk.am>
25581 * shape.h: Adding new parameter (bool logical) to all the
25582 Shape::ComputeShapeBounds functions and overrides. See prev commit for
25583 explanation of what is logical bounds.
25585 Currently all clients use logical == false. Just adding this
25588 2008-04-02 Michael Dominic K. <mdk@mdk.am>
25593 * uielement.cpp: Adding new parameter (bool logical) to all the
25594 Geometry::ComputeBounds functions and overrides. Calculating logical
25595 bounds means calculating bounds without stroke included. Ie. a line
25596 (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
25597 what the stroke is.
25599 Not used right now, will be used in just a few commits (all current
25600 ComputeBounds clients call it will logical == false).
25602 2008-04-02 Michael Dominic K. <mdk@mdk.am>
25604 * shape.cpp: Don't automatically compute the stretch bounds when
25605 computing shape bounds. Instead, compute it as a separate step in
25606 Shape::ComputeBounds.
25608 2008-04-03 Chris Toshok <toshok@ximian.com>
25610 * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
25611 contrary to msdn2, MS *is* indeed emitting this event with
25612 non-null eventargs. it's just an EventArgs object, not a
25615 2008-04-03 Jeffrey Stedfast <fejj@novell.com>
25617 * dependencyobject.cpp (EventObject::Emit): Unref the calldata
25618 even in the "no such event" exception case.
25620 2008-04-03 Larry Ewing <lewing@novell.com>
25622 * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
25623 into appropriate error code.
25625 2008-04-03 Larry Ewing <lewing@novell.com>
25627 * xaml.cpp: Generate errors when trying to set readonly properties.
25629 2008-04-03 Larry Ewing <lewing@novell.com>
25631 * xaml.cpp: make sure we set an error if the property name isn't
25634 * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
25637 2008-04-03 Larry Ewing <lewing@novell.com>
25639 * runtime.cpp (Surface::expose_to_drawable): make sure we take
25640 allocation.x and allocation.y into account when deciding not to
25641 draw. Should fix the disappearing gtksilver widget reported on irc.
25643 2008-04-02 Larry Ewing <lewing@novell.com>
25645 * xaml.cpp: flush character data at the end of property elements
25648 2008-04-02 Jackson Harper <jackson@ximian.com>
25650 * xaml.cpp: Add the element name for this error.
25652 2008-04-02 Chris Toshok <toshok@ximian.com>
25654 * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
25655 (Stroke::HitTestEndcapPoint): same.
25656 (point_gte_line): new method.
25657 (point_lte_line): new method.
25658 (Stroke::HitTestSegmentPoint): use point_gte_line and
25659 point_lte_line to determine if the point is inside the segment.
25660 (global): wrap all spew in DEBUG_HITTEST.
25662 2008-04-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
25664 * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
25667 2008-04-02 Jeffrey Stedfast <fejj@novell.com>
25669 * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
25670 integer type when comparing.
25672 * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
25673 debugging printfs. Fixes bug #375273.
25675 2008-04-01 Chris Toshok <toshok@ximian.com>
25677 * xaml.cpp: back out the SetSurface call removal.
25679 * dependencyobject.cpp (EventObject::unref): instead,
25680 SetSurface(NULL) here before we delete the object.
25682 2008-04-01 Chris Toshok <toshok@ximian.com>
25684 * control.cpp (Control::InitializeFromXaml): make sure to call
25685 SetSurface(NULL) on the old real_object since we're detaching it
25686 from the tree. Call SetSurface on ourselves (really, should just
25687 be the real_object, right?) before calling the real_object methods
25688 that would cause dirty stuff to happen.
25690 * xaml.cpp (create_custom_element): don't call SetSurface here, it
25691 will cause problems if there's a parser error (since elements
25692 can/will be on the surface's dirty list after they're destroyed.)
25693 (default_create_element_instance): same.
25695 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25697 * playlist.cpp, playlist.h: A lot of fixes according to the tests.
25698 * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
25699 specify where in the stream we start and (playlists can specify a
25700 starting point which isn't in the beginning), and set the duration from
25701 the playlist (if the playlist has it).
25702 * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
25703 false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
25704 if the recursive playlist couldn't be replaced.
25706 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25708 * media.h: Added MediaElement::GetPlaylist.
25710 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25712 * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
25713 Remove Type::NPOBJ, it's not needed.
25715 2008-04-01 Michael Dominic K. <mdk@mdk.am>
25717 * animation.cpp: Since now the clocks are synced we don't need to
25718 recursively check the states in the teardown on completed.
25720 2008-04-01 Michael Dominic K. <mdk@mdk.am>
25723 * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
25724 manually to Stopped but not touching the state of children).
25726 We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
25727 set, we don't tick the ClockGroup no matter what the state is. Idle_hint
25728 is set when all children of ClockGroup have state != Active (ie. are
25729 filling). This can be seen as "optimization" -- not to dumbly process
25730 filling clocks which keep setting same value all the time (it creates
25731 insane recursion ie. in Showcase making it unusable). Silverlight seems
25732 to do something very similiar.
25734 Before this commit a same effect was achieved by the said "desyncing" --
25735 forcing the ClockGroup to Stopped. This approach however is a bit more
25738 2008-04-01 Michael Dominic K. <mdk@mdk.am>
25740 * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
25742 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25744 * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
25746 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25748 * value.cpp: Remove a few warnings which might give false positives now.
25750 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25752 * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
25753 we're being unreffed on the main thread, if not, call unref_delayed.
25755 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25757 * runtime.cpp, runtime.h: Added a Surface::InMainThread.
25759 2008-04-01 Fernando Herrera <fherrera@novell.com>
25761 * media.cpp: Remove the request position function when aborting the
25764 2008-04-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
25766 * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
25767 MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
25768 being called from the destructor, and if so, null out the element field
25769 of the MediaPlayer, so that we don't access a destructed media element.
25770 Add an async version of MediaPlayer::EnqueueFrames, so that the audio
25771 threads can request more data in a thread-safe manner.
25773 2008-04-01 Fernando Herrera <fherrera@novell.com>
25776 * pipeline.h: Support for live mms streams, that have packet_count as
25777 0 and return false for CanSeekToPts.
25779 2008-03-31 Chris Toshok <toshok@ximian.com>
25781 * namescope.h, namescope.cpp: make no semblance of having a
25782 superior namescope implementation (where they get transported
25783 around with the subtree they're attached to when it's
25784 removed/re-added to the hierarchy.) Instead follow MS's broken
25785 implementation where temporary namescopes are completely removed
25786 when merged into another one.
25788 * collection.h, collection.cpp (Collection::MergeNames): factor
25789 out some common code from Add, Insert, and SetVal. Also, deal with
25790 the fact that merging namescopes now really adds all the names to
25791 the parent namescope, so clear the old namescope.
25792 (Collection::SetVal): don't just unregister the old toplevel name,
25793 but all the names in the subtree.
25794 (Collection::Remove): same.
25795 (Collection::Clear): same.
25796 (Collection::UnregisterAllNamesRootedAt): override DO's method,
25797 recursing into all our children.
25798 (Collection::RegisterAllNamesRootedAt): same.
25799 (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
25800 UIElement::OnLoaded is called again, and <BeginStoryboard>
25801 elements restart when the subtree is added to the hierarchy again.
25803 * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
25804 override and forward onto real_object.
25805 (Control::RegisterAllNamesRootedAt): same.
25807 * dependencyobject.cpp (DependencyObject::ClearValue): add a
25808 parameter to allow us to specify *not* to notify listeners of the
25809 property change. we do this with the NameScope property, which
25810 noone should be listening too. It was causing a tremendous
25811 performance hit when merging a lot of namescopes (as we do in
25812 inkStylusPointCount.htm)
25813 (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
25814 removed from the hierarchy, we need to unregister all the names
25816 (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
25817 added to the hierarchy, if it doesn't have a temporary
25818 namescope (in which case we just merge it).
25820 2008-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
25822 * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
25823 MemorySource owns the memory or not (if it will be freed upon
25824 destruction or not).
25826 2008-03-31 Jeffrey Stedfast <fejj@novell.com>
25828 * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
25829 for-loop would only use every other point as a starting point for
25830 a segment. E.g. if you had points a, b, c, d and e - the code only
25831 checked segments ab, cd, and e when it should have been checking
25832 ab, bc, cd, and de.
25834 2008-03-31 Fernando Herrera <fherrera@novell.com>
25836 * downloader.cpp: Check if aborted before cheking for requested
25839 2008-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
25841 * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
25843 * playlist.cpp: Updated according to pipeline changes.
25844 * mplayer.h: Fix SetState to not overwrite current bits, only current state.
25845 * media.h, media.cpp: Rework buffering progress to use the available time of
25846 media available (pts) instead of doing some funny math on file
25848 * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
25850 2008-03-31 Michael Dominic K. <mdk@mdk.am>
25852 * animation.cpp: Don't Stop the Storyboard root_clock before begining
25853 the Storyboard again, just silently tear it down.
25855 Calling Stop resets the property values to base which is something we
25856 don't want. When Begin () is called on Sb in SL, the last animated
25859 2008-03-31 Michael Dominic K. <mdk@mdk.am>
25862 * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
25863 works similar to Teardown but doesn't destroy the clock/animation
25864 hierarchy. We need this hierarchy to ie. reset prop values to base when
25865 Storyboard::Stop is called manually.
25867 When Storyboard is completed, call DetachClockGroupFromParent (if not
25868 Teardown). Otherwise the Storyboard will ghostly change state with parent
25871 2008-03-31 Michael Dominic K. <mdk@mdk.am>
25873 * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
25874 to check for NULL and report stopped == true when both ClockGroup state
25875 is Stopped and all children are Stopped.
25877 To be honest, this never currently reports Stopped == true as we do
25878 intentional state desync when storyboard reaches end -- setting the
25879 ClockGroup state to Stopped but keeping the children in Active/Filling.
25880 This *has* to go away.
25882 2008-03-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
25884 * src.mdp: Updated.
25886 2008-03-28 Jeffrey Stedfast <fejj@novell.com>
25888 * utils.cpp (TextStream::Read): Better handling of iconv() failure
25891 2008-03-28 Chris Toshok <toshok@ximian.com>
25893 * animation.cpp, animation.h: remove Storyboard::FindSurface -
25894 EventObject::GetSurface() always returns the right thing.
25895 Override SetSurface to check whether we're being detached from or
25896 attached to a surface, and pause or resume the clock in response.
25897 This fixes some issues in storyboard_EnterLeaveSemantics.
25899 2008-03-28 Chris Toshok <toshok@ximian.com>
25901 * dependencyobject.h,
25902 dependencyobject.cpp (DependencyObject::SetSurface): new method,
25903 set the surface for all our DependencyObject subclassed property
25906 * collection.h, collection.cpp (Collection::Add): SetSurface work.
25907 (Collection::Insert): same.
25908 (Collection::SetVal): same.
25909 (Collection::Remove): same.
25910 (Collection::RemoveAt): same.
25911 (Collection::Clear): same.
25912 (Collection::SetSurface): new method, iterate over all children
25913 setting the surface.
25914 (VisualCollection): remove surface logic here.
25915 (VisualCollection::VisualAdded): same.
25916 (VisualCollection::VisualRemoved): same.
25918 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25920 * mplayer.cpp: Clear all queues after a seek has completed.
25922 2008-03-28 Jeffrey Stedfast <fejj@novell.com>
25924 * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
25926 * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
25927 RemoveDir() rename.
25928 (create_unzipdir): Updated for MakeTempDir() rename.
25930 * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
25931 be more consistent with moonlight API naming convensions.
25932 (RemoveDir): Renamed from moon_rmdir().
25933 (CopyFileTo): Renamed from moon_copy_file()
25935 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25937 * debug.cpp: Fix warning.
25939 2008-03-28 Michael Dominic K. <mdk@mdk.am>
25941 * clock.cpp: Fixing the clock repeat for duration-based
25944 Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
25945 passing now (same behavior as in SL).
25947 2008-03-28 Michael Dominic K. <mdk@mdk.am>
25949 * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
25950 the bound decrease the repeat_count no matter what (if auto-reversed or
25951 not). This makes the auto-reversed storyboard work.
25953 Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
25956 2008-03-28 Michael Dominic K. <mdk@mdk.am>
25958 * animation.cpp: Teardown the storyboard in Completed only if the root
25959 clock is stopped AND all the children are stopped too. After teardown we
25960 loose the ability to reset-back the values and Completed is
25961 fired always, even if the clock is filling (a filling clock should reset
25964 This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
25965 the popular methodology of beginning a filling Storyboard on MouseEnter
25966 and stopping it on MouseLeave.
25968 2008-03-27 Michael Dominic K. <mdk@mdk.am>
25970 * runtime.cpp: Ignore the enter/leave crossing events coming as a
25971 result of grab/press started/finished.
25973 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
25975 * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
25976 MediaPlayer changes.
25977 * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
25978 private, and add public accessors when required. Remove all boolean
25979 fields and add a single bit/state field with its corresponding enum and
25980 public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
25981 no longer used. Removed unused defines. Made video and audio structures
25982 nested inside MediaPlayer instead of pointers (and queue inside
25983 video/audio), avoids pointer accesses and additional malloc/frees, since
25984 they were always created anyways. Don't seek to anywhere in Stop if
25985 we're stopping because we're closing, since it may cause crashes if
25986 we're closing because the MediaElement is being destructed (it may cause
25987 the MediaElement to be resurrected). Made public methods private
25990 2008-03-28 Fernando Herrera <fherrera@novell.com>
25992 * asf/asf.cpp: Use the pts == 0 optimization before trying to
25996 * downloader.h: Add functions to allow request a remote postition.
26001 * pipeline.h: Implement SeekToPts for mms:// sources.
26003 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
26005 * dependencyobject.h: Detect an unrecoverable error condition with
26006 refcounting (reffing an object with refcount of 0), and abort instead of
26007 crashing randomly and insecurely later on.
26009 2008-03-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
26011 * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
26013 2008-03-27 Jeffrey Stedfast <fejj@novell.com>
26015 * downloader.cpp (Downloader::GetResponseText): Use the new
26018 * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
26021 * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
26022 sure to exit the loop ;-)
26024 2008-03-27 Jeffrey Stedfast <fejj@novell.com>
26026 * xaml.cpp (xaml_create_from_file): Use the new TextStream class
26027 instead of doing things the hard way. Might be more performant,
26028 definitely won't malloc/free nearly as much. Also fixed a bug
26029 where leading lwsp might be larger than our read buffer.
26031 * utils.cpp (TextStream): New class for reading text input
26032 streams, converting them to UTF-8 as they are read.
26034 * downloader.cpp (Downloader::Send): Handle the case where the
26035 attached surface is NULL.
26036 (Downloader::GetResponseText): Handle zero-length files. Also,
26037 nul-terminate the returned buffer (which is now a char* rather
26038 than a void*) since it is clear that the javascript expects to be
26039 able to use this value as a string buffer.
26041 2008-03-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
26043 * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
26044 requested to play audio. Don't hold the lock when polling.
26046 2008-03-26 Jeffrey Stedfast <fejj@novell.com>
26048 * downloader.cpp (Downloader::SendInternal): New method that is
26049 basically the same as the old ::Send().
26050 (Downloader::Send): Queue the SendInternal() call via
26051 TimeManager's TickCall API.
26053 2008-03-26 Chris Toshok <toshok@ximian.com>
26055 * dependencyobject.h, dependencyobject.cpp (class EventObject):
26056 add RemoveMatchingHandlers variants that let you pass in a
26057 predicate to test event handlers with.
26059 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26061 * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
26062 changes. Added a MemoryStream.
26064 * media.cpp: Updated according to API changes.
26066 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26068 * mplayer.cpp, mplayer.h: Add a new state to the audio:
26069 WaitingForData, in which case we don't poll on that audio
26070 node (since the hardware will just tell us it's ready to recieve
26071 data). Fixes audio using 100% cpu after when it runs out of
26072 data (either because of network hiccup or the stream finished).
26074 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26076 * pipeline.cpp, mplayer.cpp, pipeline.h: Made
26077 IMediaStream::selected private and add accessors.
26079 2008-03-26 Stephane Delcroix <sdelcroix@novell.com>
26082 * shape.cpp: set the dash caps for all the shapes, draw start/end caps
26083 on line and polylines.
26085 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26087 * mplayer.cpp: Remove unused fields.
26089 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26091 * debug.cpp: Correctly compute base addresses of libraries, and use a
26092 thread-safe version of strtok.
26094 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26096 * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
26097 - it's now necessary to explicitly disable it in order to get rid of it
26098 instead of relying on a default flag to have the right value in order to
26099 get it. Makes video work with mopen again.
26101 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26103 * pipeline.cpp: Fix a crash.
26105 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26107 * mplayer.cpp: Remove Instance (), it's redundant.
26108 * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
26109 everything in the audio player with one semaphore, it simplifies things
26110 and removes a couple of problems helgrind found.
26111 * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
26112 audio player as well. Use delayed unreffing in destructors which may be
26113 called on worker threads.
26115 2008-03-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
26117 * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
26118 * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
26119 thread-safe and making it thread-safe isn't worth it. Also use a pthread
26120 mutex instead of a glib mutex, since helgrind reports a lot of false
26121 positives for glib mutexes. Hold the mutex for the smallest amount of
26122 time possible, making it unnecessary to use a recursive mutex.
26124 2008-03-26 Michael Dominic K. <mdk@mdk.am>
26126 * shape.cpp: Reverting the clip changes, it was bolox.
26128 2008-03-25 Jeffrey Stedfast <fejj@novell.com>
26130 * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
26131 the assert - it was only needed during implementation to make sure
26132 the bsearch worked correctly.
26133 (Mp3FrameReader::Seek): Same.
26135 2008-03-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
26137 * media.cpp: Don't access any TimeManager instance from another thread, just
26138 call the static TimeManager::InvokeOnMainThread.
26140 2008-03-25 Michael Dominic K. <mdk@mdk.am>
26142 * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
26143 if Width/Height was specified. Fixes a bogus warning about infinity
26146 2008-03-25 Michael Dominic K. <mdk@mdk.am>
26148 * src/shape.cpp: When setting the clipping for the shape also include
26149 the transformations coming from stretching. This fixes
26150 test-shape-line-stretch3 test and the missing stripes on Silverlight
26153 2008-03-24 Chris Toshok <toshok@ximian.com>
26155 * runtime.h (class Surface): add
26156 Surface::PropagateDirtyFlagToChildren.
26158 * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
26159 duplicated code out of ProcessDownDirtyElements.
26161 2008-03-24 Chris Toshok <toshok@ximian.com>
26163 * panel.cpp (Panel::FrontToBack): remove the tree walking
26164 code (where we walked up the hierarchy looking for cases where we
26165 shouldn't subtract.) Instead, we always subtract if the local
26166 state says we can. Instead of forcing all leaf elements to walk
26167 up to their parent panel, we assume they'll operate on local state
26168 as well, and give them a copy of the region to subtract their
26169 bounds from, instead of the real region. We are sneaky.
26171 * uielement.cpp (UIElement::FrontToBack): Operate on our local
26172 state only, no walking up the tree.
26174 2008-03-24 Jeffrey Stedfast <fejj@novell.com>
26176 * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
26177 was seemingly getting layer 1 and layer 2 backwards.
26178 (mpeg_frame_length): Seems like we are never supposed to add 2
26179 bytes for 16bit crc?
26181 * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
26182 then don't bother applying kerning. Fixes 2 cases in
26183 LineBreakClasses.htm
26184 (TextLayout::LayoutWrap): Disable breaking after a
26185 G_UNICODE_BREAK_AFTER if we can break before the word as this
26186 seems to fix the last test case in LineBreakBasic1.htm
26187 (TextLayout::LayoutWrap): Reverted a fix that introduced a
26188 regression but didn't fix any known test cases.
26190 2008-03-21 Michael Dominic K. <mdk@mdk.am>
26192 * src/runtime.cpp: When calling gdk_window_get_pointer in
26193 motion_notify_ to pop more hints actually use the results as they're
26194 more valid than x,y in the event passed. Without doing so, we're not
26195 getting the last mouse coords.
26197 Fixes the nasty problem that MouseEnter/Leave is not called once in a
26200 2008-03-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
26202 * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
26203 MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
26204 with EventObject::GetSurface.
26206 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
26208 * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
26211 * text.cpp (deobfuscate_font): New helper function used by
26212 TextBlock and Glyphs.
26213 (TextBlock::DownloaderComplete): Check for obfuscated fonts.
26214 (Glyphs::DownloaderComplete): Same.
26216 * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
26217 GUID from a string.
26218 (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
26219 (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
26220 since we no longer get passed zip files. Instead of extracting
26221 fonts from a zip archive, we now index the fonts in the
26222 directory (if they haven't already been indexed) and then try to
26223 find the best matching font from the indexed fonts.
26224 (IndexFontDirectory): New function to index all fonts in a
26225 directory (and all subdirs).
26226 (TextFont::TextFont): Changed for other API changes.
26228 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
26230 * downloader.cpp (Downloader::IsDeobfuscated)
26231 (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
26232 Some new methods for replacing the original downloaded file with
26233 another tmp file that will need to be unlinked when the downloader
26234 is destroyed or a new file is requested.
26236 * utils.cpp (moon_copy_file): New convenience function.
26238 2008-03-20 Jeffrey Stedfast <fejj@novell.com>
26240 * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
26241 and unzipped state variables. Get rid of part_hash, no longer
26243 (Downloader::CleanupUnzipDir): New method to cleanup the files
26244 extracted from any zip files we downloaded.
26245 (Downloader): Call CleanupUnzipDir ().
26246 (Downloader::GetDownloadedFile): New method that gets the original
26247 untouched downloaded file path.
26248 (Downloader::DownloadedFileIsZipped): New method to check to see
26249 if the downloaded file is a zip archive.
26250 (Downloader::GetDownloadedFilePart): A new method that replaces
26251 the old GetResponseFile() API, behaves the same as the old API.
26252 (Downloader::GetUnzippedPath): New method to get the unzip
26253 directory path (and unzip the downloaded file if it hasn't already
26255 (Downloader::Open): Cleanup any extracted zip files.
26257 * utils.cpp (moon_rmdir): New convenience function.
26259 2008-03-20 Larry Ewing <lewing@novell.com>
26261 * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
26262 the surface first so that the changes to the properties cause
26265 2008-03-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
26267 * src.mdp: Added new files.
26269 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
26271 * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
26273 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
26275 * pipeline.h: Added two more error conditions.
26277 2008-03-19 Jeffrey Stedfast <fejj@novell.com>
26279 * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
26280 caching glyphs. Try to take full advantage of the pre-allocated
26281 glyphs array before clobbering previously loaded glyphs.
26283 2008-03-19 Michael Dominic K. <mdk@mdk.am>
26285 * src/dependencyobject.cpp: Making the prop resolving a bit more
26286 gracefull (smart) in case of common mistakes.
26288 Solves test-crash-gracefull-prop-resolving.xaml.
26290 2008-03-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
26292 * pipeline.cpp: We need to unlock the mutex before joining the
26293 thread. Fixes a dead-lock.
26295 2008-03-19 Geoff Norton <gnorton@novell.com>
26297 * yuv-converter.cpp: Use xmm0 to store a load value to avoid a
26300 2008-03-19 Geoff Norton <gnorton@novell.com>
26302 * yuv-converter.cpp: More 64-bit fixes
26304 2008-03-19 Geoff Norton <gnorton@novell.com>
26306 * yuv-converter.cpp: Fix the test/cmp on x86-64
26308 2008-03-18 Geoff Norton <gnorton@novell.com>
26310 * yuv-converter.cpp: Fold RESTORE_COLOR_MODIFIERS into
26311 CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
26312 gcc. The aligned load/store version of CALC_COLOR_MODIFIERS was
26313 clobbering (x)mm3 (green coefficient) when processing the high order
26314 pels. I've reordered the method to remove some useless load/calc
26315 patterns that were there simply for readability and fixed the
26318 2008-03-18 Jeffrey Stedfast <fejj@novell.com>
26320 * font.cpp (TextFontDescription::CreatePattern): Always return the
26322 (TextFont::Load): No longer takes a fromFile argument.
26323 (TextFont::TextFont): Cache using the original pattern (which is
26324 what we really wanted to do originally, but were caching the
26325 "closest-match" pattern before which was wrong).
26326 (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
26327 FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
26328 wrapper API that is unnecessary.
26329 (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
26331 2008-03-18 Geoff Norton <gnorton@novell.com>
26333 * yuv-converter.cpp: 768bits != 768bytes. Implement prefetching the
26334 cache lines for the Y plane.
26336 2008-03-18 Andrew Jorgensen <ajorgensen@novell.com>
26338 * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
26339 * plugin-ffmpeg.h: Fix conditional swscale inclusion
26341 2008-03-18 Michael Dominic K. <mdk@mdk.am>
26344 * animation.h: Adding a new virtual method GetValueKind to Animation
26345 that returns the kind/type of values that given animation generates
26346 (doubles, points, etc.).
26348 Modyfying the HookupStorage to check if the animation type matches the
26349 type that the animated property expects. If it doesn't, bail out with a
26350 helpfull warning in the style of:
26352 "Ellipse.Fill property value type is 'Brush' but animation type is
26355 This fixes a crash in test-crash-color-anim-on-solid.xaml and all
26356 crashes where we try to animate ie. a color property using doubles.
26358 2008-03-18 Michael Dominic K. <mdk@mdk.am>
26360 * animation.cpp: Even more smoothing for KeySpline.
26362 2008-03-18 Michael Dominic K. <mdk@mdk.am>
26364 * dependencyobject.cpp: Enabling back the inheritance test for property
26365 resolving but only when dealing with non-attached properties.
26367 2008-03-17 Geoff Norton <gnorton@novell.com>
26370 * pipeline-ffmpeg.cpp:
26371 * pipeline-ffmpeg.h:
26372 * swscale-converter.cpp:
26373 * swscale-converter.h: Refactor the swscale based yuv2rgb converter
26374 out to a seperate file so it can be included optionally in the build.
26376 2008-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
26378 * mplayer.cpp: Show error message, not only error number, upon thread
26381 2008-03-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
26383 * playlist.cpp, playlist.h: Add a way to determine if the playlist was
26384 created to play a single file, or if it was created from an asx file
26387 2008-03-17 Chris Toshok <toshok@ximian.com>
26389 * dependencyobject.cpp (EventObject::EventObject): reorder things
26392 2008-03-17 Geoff Norton <gnorton@novell.com>
26394 * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
26395 for locals. Use posix_memalign and share the instance for the
26396 lifespan of the converter.
26398 2008-03-17 Jeffrey Stedfast <fejj@novell.com>
26400 * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
26401 index argument, apparently FreeType2 always set face->face_index
26402 to 0 for these type fonts, so don't rely on it being accurate.
26403 (FontPack::CacheFileInfo): Pass the index value as an argument to
26404 FontPackFileFace's ctor.
26405 (TextFont::TextFont): Do hash lookups based on the matched
26406 pattern, not the original pattern passed in.
26408 2008-03-17 Jeffrey Stedfast <fejj@novell.com>
26410 * text.h: Added #include "layout.h"
26412 * font.cpp: Removed font.cpp's layout logic which has been
26413 rewritten in layout.cpp.
26414 (TextFont::HasGlyph): It seems that Silverlight may wrap text
26415 differently depending on whether the glyph is in the font?
26417 * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
26419 2008-03-17 Geoff Norton <gnorton@novell.com>
26421 * yuv-converter.cpp: Ensure that our pointer alignment checks are
26424 2008-03-17 Michael Dominic K. <mdk@mdk.am>
26426 * animation.cpp: Interpolate linearly between keyspline values. This
26427 fixes the jags in test-animation-slow-keyspline.xaml.
26429 2008-03-17 Michael Dominic K. <mdk@mdk.am>
26431 * animation.cpp: Fixes to the way we generate the KeySpline values to be
26432 more smooth an precise.
26434 2008-03-17 Larry Ewing <lewing@novell.com>
26436 * runtime.cpp: go ahead and invalidate the toplevel before
26437 cleaning everything up. remove the disconnect call in
26438 DestroyWidget, all the handlers should be ok with getting called
26439 on fullscreen or the normal widget.
26441 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
26443 * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
26444 line breaking logic.
26446 2008-03-14 Geoff Norton <gnorton@novell.com>
26448 * yuv-converter.cpp: Remove some dead code.
26450 2008-03-14 Geoff Norton <gnorton@novell.com>
26452 * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte
26453 bounary. Each pel will expand to 4 bytes. Since we process 16
26454 pels at a time in SSE2 we need 64 output bytes per iteration.
26456 * yuv-converter.cpp: Remove the rest of the unaligned move/stores
26458 2008-03-14 Sebastien Pouliot <sebastien@ximian.com>
26460 * xaml.cpp: (flush_char_data) free data inside GString since the
26461 Value constructed around it creates it's own copy.
26463 2008-03-14 Geoff Norton <gnorton@novell.com>
26465 * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
26466 to get a 16byte alignment for SSE2.
26467 * yuv-converter.cpp: Remove most of our unaligned load/stores.
26469 2008-03-14 Larry Ewing <lewing@novell.com>
26473 * eventargs.h, enventargs.cpp:
26474 * type.h, type.cpp: make EventArgs a subclass of DependencyObject
26475 and all that entails. Still need to look over the properties.
26477 * runtime.cpp, runtime.h: expose EmitError for now.
26479 2008-03-14 Larry Ewing <lewing@novell.com>
26481 * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
26482 with a a 16bit alignment for the yuv converter.
26484 2008-03-14 Sebastien Pouliot <sebastien@ximian.com>
26486 * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's
26487 own copy of the message.
26489 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
26491 * font.cpp (TextRun::TextRun): Can't drop non-printable chars
26492 because soft-hyphen is apparently non-printable.
26494 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
26496 * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
26497 happen now if the glyph does not exist in the font).
26498 (Glyphs::Render): Same.
26500 * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
26501 which takes a unichar and index. This is now the main
26502 implementation that the other GetGlyphInfo() and
26503 GetGlyphInfoByIndex() use. The glyph table is now indexed by index
26504 rather than unichar.
26506 2008-03-14 Jeffrey Stedfast <fejj@novell.com>
26508 * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
26509 without a specified index, these are ok.
26511 2008-03-14 Michael Dominic K. <mdk@mdk.am>
26513 * brush.cpp: In ImageBrush, if the image has not been downloaded
26514 yet, draw nothing like SL does -- instead of the grayish shadow.
26516 2008-03-14 Michael Dominic K. <mdk@mdk.am>
26518 * dependencyobject.cpp: Check the types of objects when
26519 resolving_property_paths and some more verbosity to the error
26520 reporting. Now test-crash-non-existing-animation-target-prop3
26521 fails with the proper warning.
26523 Also, terminate first on first error found.
26525 2008-03-14 Michael Dominic K. <mdk@mdk.am>
26527 * dependencyobject.cpp: Even more verbose error reporting in the
26528 resolve_property_path ().
26530 2008-03-14 Michael Dominic K. <mdk@mdk.am>
26532 * animation.cpp: Making the warning report proper error when can't
26533 resolve property on object. Now we're getting:
26536 (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
26537 on object ball, which has type Ellipse!"
26539 2008-03-14 Michael Dominic K. <mdk@mdk.am>
26541 * animation.cpp: Check correctly if we have object and property
26542 before trying to hookup storage.
26544 Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
26545 but the warning message is still incorrect:
26547 "No object named ball!"
26549 The object named "ball" exists but it doesn't have the requested
26552 2008-03-14 Michael Dominic K. <mdk@mdk.am>
26554 * animation.cpp: Changing few printf's to g_warnings.
26556 2008-03-14 Stephane Delcroix <sdelcroix@novell.com>
26558 * shape.cpp: Deal with different [start|end|dash] caps for lines
26561 2008-03-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
26563 * mplayer.cpp: Comment out printf.
26565 2008-03-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
26567 * mplayer.cpp: AudioNode::Play: property calculate the delay between the
26568 play position in the hardware and the pts we just sent to alsa, and
26569 subtract it from that pts.
26571 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
26573 * clock.cpp: use a monotonic clock if available to avoid issues with
26574 the system time changing.
26576 2008-03-13 Jeffrey Stedfast <fejj@novell.com>
26578 * layout.cpp (TextRun::TextRun): Don't drop non-printable
26579 chars... somehow soft-hyphen (0xAD) is non-printable according to
26580 glib and so breaks the LineBreakBasic1.htm test.
26581 (TextLayout::LayoutNoWrap): Keep appending words to the line until
26582 a line ends beyond max_width, we don't care where it begins (it
26583 could begin way beyond max_width for all we care).
26585 2008-03-13 Chris Toshok <toshok@ximian.com>
26587 * text.cpp (~Glyphs): don't unref the fill, since we don't take a
26590 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26592 * mplayer.cpp: Make this build on SLED until I find a proper workaround.
26594 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26596 * media.cpp: Update according to MediaPlayer changes.
26598 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26600 * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
26601 thread. Fixes #326902.
26603 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26605 * Makefile.am: Set our G_LOG_DOMAIN.
26607 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26609 * xaml.cpp: default_create_element_instance: Set the surface as soon as
26612 2008-03-13 Michael Dominic K. <mdk@mdk.am>
26614 * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
26615 behavior. When getting the keyframe for time additionally crawl back (if
26616 needed) to find the last non-null keyframe and non-null previous
26617 keyframe. By doing so we silently ignore the frames without values set
26618 and don't crash on nullable types.
26620 Fixes the crash in AnimationMatrix2.html/xaml and in the
26621 test-animation-null-keyframe.xaml test.
26623 Remving the XXX warnings about nullabled types from file since they
26624 don't apply anymore.
26626 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26628 * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
26629 Visual, we're already storing the surface in the EventObject.
26630 * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
26631 and comment out the warning, since with the current code it's entirely
26632 possible to unref a dependecyobject with no surface.
26634 2008-03-13 Stephane Delcroix <sdelcroix@novell.com>
26636 * brush.cpp: compute relative transform as it's done in SL. We used to
26637 derelativize transform to match the absolute ones. Now we map the brush
26638 to a 1x1 square, apply the transform, and unmap back. It simplify the
26639 computation a lot too. Fixes bnc #354892 and a bad gradient in
26642 2008-03-12 Chris Toshok <toshok@ximian.com>
26644 * media.cpp (expand_rgb_to_argb): use a different codepath if the
26645 rowstride isn't padded out to be divisible by 4 (or else we read
26646 off the end by a byte).
26648 2008-03-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
26650 * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
26652 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26654 * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
26655 * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
26656 pipeline correctly removes registered infos upon shutdown, so if we're
26657 initialized again we should also register again.
26658 * runtime.cpp: Call Media::Shutdown do shut down the media threads before
26659 doing anything else.
26661 2008-03-12 Jeffrey Stedfast <fejj@novell.com>
26663 * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
26665 * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
26666 TextRun's, if the Run contains \n's, break the text into
26667 non-linebreak and linebreak TextRun elements. Allows the
26668 TextLayout::Layout() logic to be simplified considerably.
26670 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26672 * dependencyobject.cpp: DependencyObject: Initialize our surface field to
26675 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26677 * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
26678 reporting so that the errors can easily be bubbled up the pipeline. Add
26679 a 'selected' field to IMediaStream, whether the media player is using
26680 that stream or not.
26681 * error.h: Add a MediaErrorEventArgs class.
26683 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26685 * pipeline.cpp: Propagate the surface from the media element to the media.
26687 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26689 * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
26690 IMediaStream, indicates whether the stream is being played or not.
26692 2008-03-12 Sebastien Pouliot <sebastien@ximian.com>
26694 * dependencyobject.cpp: Add NULL check in method
26695 RemovePropertyChangeListener since a bad XAML input can cause a
26696 NULL entry in the list.
26698 2008-03-12 Michael Dominic K. <mdk@mdk.am>
26702 * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
26704 2008-03-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
26706 * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
26707 don't crash, print an error message. Dup all strings put into
26708 namespace_map, and free them all upon its destruction.
26710 2008-03-11 Larry Ewing <lewing@novell.com>
26712 * collection.cpp (VisualCollection::VisualAdded): make sure we set
26713 the surface as the first step, dirty processing depends on it.
26714 Fixes OM_RemoveClearRemoveAt.htm regression.
26716 2008-03-11 Larry Ewing <lewing@novell.com>
26719 * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
26720 and Left when we are toplevel so that we can recompute our
26723 * uielement.cpp: if we don't have a parent call GetTransformFor on
26724 ourself so that Top and Left are taken into account on toplevel
26725 canvases. Fixes test-canvas-toplevel.xaml
26727 2008-03-11 Chris Toshok <toshok@ximian.com>
26729 * clock.h, clock.cpp: a few changes, the most important
26730 being (ifdefed for now) code to put the timemanager to sleep when
26731 it's not needed for animations, rendering, or tick calls. To do
26732 this we need a couple of changes to the clock code. 1) propagate
26733 the time_manager out to all clocks, so we can force it to tick the
26734 clock hierarchy the first time whenever a storyboard is started.
26735 2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
26736 in need of another tick." Do the same for the tick call stuff,
26737 where the bool return value means "we have more tick calls
26738 pending." Also, add a couple of methods to the
26739 TimeManager (NeedRedraw, NeedClockTick) which will start up the
26740 timemanager if it's asleep, and set the proper flag so it'll do
26741 the right work on the next tick.
26744 * uielement.cpp: notify the timemanager that we have a redraw to
26747 * runtime.cpp (Surface::realized_callback): tell the time manager
26748 to redraw us to get the process moving.
26750 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
26752 * xaml.cpp: Work around the fact that it's not always safe to
26753 call some expat functions, like XML_GetCurrentLineNumber, if the
26754 parsing failed early.
26756 2008-03-11 Chris Toshok <toshok@ximian.com>
26758 * namescope.h, namescope.cpp: switch from reffing the objects to
26759 using the DestroyedEvent. Otherwise our toplevel canvas has a ref
26760 cycle with its namescope. Also, short circuit out if we're
26761 registering the same object twice. keeps us from having too many
26762 DestroyedEvents (since RemoveHandler only removes one).
26764 * dependencyobject.h, dependencyobject.cpp: move
26765 GetSurface/SetSurface to EventObject, and add unref_delayed as a
26766 method. If the event object has a surface associated with it, add
26767 it to the surface's pending list of unrefs. otherwise warn us and
26768 add it to the global list. The warnings should be fixed as the
26769 global list really should go away.
26771 Also, before we free a value, make sure to remove our handler and
26774 Also, get rid of OBJECT_TRACK_ID. use an environment variable for
26775 this. So if you compile with OBJECT_TRACKING on, nothing new
26776 happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
26777 variable to the id of the object you want to track. Makes the
26778 turnaround time a little quicker.
26780 shift some things around in the header file while I'm making this
26783 * runtime.h, runtime.cpp: move some more methods to the .cpp from
26784 the .h, and also add the per-surface pending unrefs list. This is
26785 basically a c&p of the global list from dependency.cpp.
26787 * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
26788 using EventObject's.
26790 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
26792 * xaml.cpp: Add NULL check in dependency_object_add_child since
26793 parent->parent->item may be NULL in malformed XAML files.
26795 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26797 * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
26798 EstimatePtsPosition and remove the estimate parameter, it's never used.
26800 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26802 * runtime.cpp: No need to scream in printfs.
26804 2008-03-11 Jeffrey Stedfast <fejj@novell.com>
26806 * font.cpp (TextLayout::Layout): More fixes, this is getting
26809 2008-03-11 Sebastien Pouliot <sebastien@ximian.com>
26811 * xaml.cpp: Avoid crashing if the PML does not start with a
26812 M(ove) instruction.
26814 2008-03-11 Michael Dominic K. <mdk@mdk.am>
26816 * src/: Moving implementations from .h to .cpp, leaving only
26817 setters/getters + simple constructors in .h.
26819 2008-03-11 Larry Ewing <lewing@novell.com>
26821 * xaml.cpp (dependency_object_set_property): throw an error if we
26822 get here without a DependencyObject. Fixes
26823 test-property-parsing.xaml
26825 2008-03-10 Larry Ewing <lewing@novell.com>
26828 * uielement.cpp: add more checks to the parent tree.
26830 2008-03-10 Chris Toshok <toshok@ximian.com>
26832 * dependencyobject.cpp (~DependencyObject): use
26833 g_hash_table_foreach_remove, so the dtor of one value can't access
26834 an already destroyed DO from another value.
26836 2008-03-10 Chris Toshok <toshok@ximian.com>
26838 * namescope.cpp: don't explicitly unref the object when removing
26839 it. instead use base_unref as the value-dtor for the GHashTable.
26840 This will cause unrefs when the hash table is destroyed in the
26841 dtor (a case we were missing before.)
26843 * collection.h, collection.cpp (class Collection): factor out the
26844 body of Collection::Clear into a non-virtual method that we can
26845 call from the dtor.
26847 2008-03-10 Larry Ewing <lewing@novell.com>
26850 * panel.cpp: make sure we don't subtract the region unless non of
26851 our anscestors have a slip mask. This should be implemented in a
26852 more efficient way.
26854 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26856 * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
26858 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26860 * dependencyobject.h, dependencyobject.cpp: Enable object counting when
26862 * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
26863 * pipeline.cpp: Remove printfs.
26865 2008-03-10 Larry Ewing <lewing@novell.com>
26868 * geometry.cpp: make IsBuilt check for actual path data as well
26869 then use it everywhere we need it. Invalidate the path if the
26870 figures change. Fixes test-transform-clip.htm.
26872 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26874 * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
26876 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26878 * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
26881 2008-03-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
26883 * media.cpp: Update according to pipeline changes. TryOpen: our
26884 downloaded_file field may change when we call MediaOpened, so save a
26885 local copy before calling MediaOpened. Unref our playlist upon
26887 * mplayer.cpp: Update according to changes in the pipeline.
26888 * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
26889 rest aren't used. Make the remaining method take the stream as a
26890 parameter, and the resulting frame will be put in the closure. Also
26891 handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
26892 case just try again with the next frame. Make MediaWork ref/unref the
26893 fields that can be ref counted.
26895 2008-03-10 Chris Toshok <toshok@ximian.com>
26897 [ Fixes bug #368460 ]
26898 * collection.cpp (Collection::SetVal): make sure to unregister the
26899 name of the object(s) we remove from the collection.
26900 (Collection::Remove): same.
26901 (Collection::RemoveAt): same.
26902 (Collection::Clear): same.
26904 * namescope.cpp (NameScope::RegisterName): ref the object.
26905 (NameScope::UnregisterName): unref the object.
26907 2008-03-10 Jeffrey Stedfast <fejj@novell.com>
26909 * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
26910 Silverlights TextWrapping="Wrap" bug where it doesn't ever break
26913 2008-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
26915 * src.mdp: Updated.
26917 2008-03-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
26919 * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
26920 * runtime.cpp: Use GetRefCount, not refcount.
26922 2008-03-10 Chris Toshok <toshok@ximian.com>
26924 * runtime.h, runtime.cpp: add surface_get_time_manager.
26926 * downloader.h, downloader.cpp: add downloader_get_surface.
26928 2008-03-10 Michael Dominic K. <mdk@mdk.am>
26932 * shape.cpp: Making the shape-caching a runtime parameter
26933 (shapecache=yes). Turned off right now.
26935 2008-03-10 Michael Dominic K. <mdk@mdk.am>
26937 * shape.cpp: Tiny refactoring to the surface-size calculation code.
26939 2008-03-10 Michael Dominic K. <mdk@mdk.am>
26942 * shape.cpp: Adding functionality to limit the amount of caching
26943 happening on one surface. Currently set to ~6mb.
26945 2008-03-09 Larry Ewing <lewing@novell.com>
26947 * mplayer.cpp: fix another place that used the wrong stride.
26949 2008-03-09 Geoff Norton <gnorton@novell.com>
26951 * yuv-converter.cpp: Make sure we emms after finishing sse/mmx
26954 2008-03-09 Geoff Norton <gnorton@novell.com>
26956 * yuv-converter.cpp: Detect the CPU features at runtime. We
26957 should now be able to distribute a 32-bit SSE2/MMX build to
26958 non SSE2/MMX machines
26960 2008-03-09 Geoff Norton <gnorton@novell.com>
26962 * yuv-converter.cpp: Implement runtime fallbacks in the Convert
26963 function (TODO: Still need to runtime detect SSE2/MMX)
26965 2008-03-09 Larry Ewing <lewing@novell.com>
26967 * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
26969 2008-03-09 Larry Ewing <lewing@novell.com>
26971 * mplayer.cpp (MediaPlayer::Open): use the proper stride
26972 calculation functions.
26974 2008-03-08 Geoff Norton <gnorton@novell.com>
26976 * yuv-converter.cpp: Implement a SSE2 version of the YUV2RGB
26977 codepath along with some code cleanup. Still some more cleanup
26978 to do for runtime detection of CPU features.
26980 2008-03-08 Geoff Norton <gnorton@novell.com>
26982 * yuv-converter.cpp: Fix some erroneous math. U' != U.
26983 These coefficients are far more sane now and our lum change is
26984 reflected properly.
26986 2008-03-08 Chris Toshok <toshok@ximian.com>
26988 * clock.cpp (TimeManager::SourceTick): larry gets credit for
26989 spotting this problem and suggesting the fix. remove the
26990 hysteresis code, and *always* set a new timeout, based on what our
26991 idea of the timeout and the amount of time we spent rendering the
26992 previous frame. This smooths things out immensely, removes (for
26993 me) the animation stutters induced by audio in sprawl, and results
26994 in fewer dropped frames.
26996 2008-03-08 Geoff Norton <gnorton@novell.com>
26998 * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
26999 and b was pulling the wrong l/h value.
27001 2008-03-08 Chris Toshok <toshok@ximian.com>
27003 * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
27004 accessing dob->refcount.
27005 (Value::CreateUnref): same.
27007 * dependencyobject.h, dependency.cpp (class EventObject): reorder
27008 this class definition so that we don't have multiple
27009 public/protected/private areas. confusing as hell :) Also, move
27010 the implementations of the non-performance critical things into
27011 the .cpp file, as they were making the .h rather cluttered (ctor,
27012 dtor, weak ref/unref.) Lastly, make almost everything private
27013 instead of public (most importantly the refcount.)
27015 * debug.h, debug.cpp: random code cleanup. we don't need to be
27016 concerned with adding some additional stack methods to the plugin
27017 in the DEBUG case, so go ahead and just use DEBUG here instead of
27020 2008-03-08 Chris Toshok <toshok@ximian.com>
27022 * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
27023 extern guint32 moonlight_flags.
27025 * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
27026 converter, otherwise use ffmpeg.
27028 * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
27029 flags, and (my god) put the extern moonlight_flags here.
27031 * runtime.cpp: add yuv converter options. use
27032 MOONLIGHT_OVERRIDES=converter=yuv to enable it. default is
27033 "converter=ffmpeg".
27035 2008-03-08 Geoff Norton <gnorton@novell.com>
27037 * yuv-converter.cpp: Clear the mmx state when we're done
27038 processing. Fixes most problems on x86_32.
27040 2008-03-08 Geoff Norton <gnorton@novell.com>
27042 * pipeline.cpp: Disable YUV converter, its crashing on x86_32
27045 2008-03-08 Geoff Norton <gnorton@novell.com>
27047 * pipeline-ffmpeg.cpp: Dont register YUV converter here.
27048 * pipeline.cpp: Register YUV converter here.
27050 2008-03-08 Geoff Norton <gnorton@novell.com>
27052 * yuv-converter.cpp: Remove some code duplication and refactor
27053 to support register starved implementations.
27055 2008-03-08 Geoff Norton <gnorton@novell.com>
27057 * Makefile.am: Add yuv-converter.cpp to the build
27058 * yuv-conveter.*: Our YUV2RGB 420P converter. Replaces
27060 * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
27062 2008-03-08 Chris Toshok <toshok@ximian.com>
27064 * clock.h, clock.cpp, animation.cpp: a few clock related changes.
27066 1. Revert the change that uses "forward" to tell if we're moving
27067 forward or not. This isn't the only indicator, as a parent clock
27068 might be ticking backward, so we really do need to use "our_delta"
27070 2. Also, we need to not clamp the time of the clock (on either
27071 end) when we're filling, as if the parent's duration is longer
27072 than ours and they autoreverse, there needs to be some padding in
27073 the reverse direction before we start again.
27075 3. Only call ComputeBeginTime() on a newly created clock if the
27076 timeline has a begin time specified. Otherwise, use
27077 BeginOnTick/GetBeginOnTick to make it begin on the next tick.
27078 This fixes the chess animation breakage. The problem was caused
27079 by us computing the begin time immediately in Storyboard::Begin,
27080 which would calculate the clock's begin time relative to the
27081 *previous* tick. on the next tick, the clock was almost always at
27082 1.0 progress, which caused the animations to skip directly to the
27085 2008-03-08 Chris Toshok <toshok@ximian.com>
27087 * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
27088 dirty.cpp, dependencyobject.cpp: more assert removal. we can't
27089 assert in a plugin (even if people are running a debug build it's
27090 not exactly nice to bring down their browser.)
27092 2008-03-07 Chris Toshok <toshok@ximian.com>
27094 * value.cpp (Value::CreateUnrefPtr): don't assert here.
27095 (Value::CreateUnref): same.
27097 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
27099 * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
27100 it's not initialized, print a warning and re-initialize it.
27102 2008-03-08 Fernando Herrera <fherrera@novell.com>
27106 * playlist.h: Add support for ASX2 playlist files returned by
27107 mediaservers when requesting a mmsh file over plain http. Fixes
27108 http://channel9.msdn.com.
27110 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
27112 * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
27113 case-insensitively.
27115 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
27117 * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
27118 derived classes protected.
27119 * media.cpp: Update according to pipeline changes. TryOpen: our
27120 downloaded_file field may change when we call MediaOpened, so save a
27121 local copy before calling MediaOpened.
27123 2008-03-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
27125 * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
27126 * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
27127 TimeManager instance to add the timeout to.
27129 2008-03-07 Sebastien Pouliot <sebastien@ximian.com>
27131 * downloader.cpp: Fix access to Status from JScript.
27133 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27135 * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
27138 2008-03-07 Sebastien Pouliot <sebastien@ximian.com>
27140 * brush.cpp: Fix default value for ColorInterpolationMode (js
27142 * parsertest.cpp: Adapt to API change.
27143 * xaml.cpp|h: Change value_from_str[_with_typename] to return a
27144 bool since NULL can be a valid Value in some cases (e.g. empty
27145 stuff that should not reset the DO default values).
27147 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27149 * mplayer.cpp: Add a null check before accessing any time managers.
27151 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27153 * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
27154 accessing the field.
27155 * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
27156 the field. Update according to pipeline changes.
27157 * mplayer.cpp, mplayer.h: Update according to pipeline changes.
27158 * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
27159 can be ref counted. Make MediaClosure more intelligent by ref/unreffing
27160 the context and media fields. All variations of MediaWork has a closure,
27161 so move the closure field out of the union. This simplifies
27162 Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
27163 not cause any reads/seeks which may block. Remove SetQueueCallback, the
27164 request takes a closure now. Implement an ASXDemuxer to read ASX files.
27165 * sizes.cpp: Updated.
27166 * playlist.h, playlist.cpp: First part of the new playlist support.
27168 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27170 * dependencyobject.cpp: Make the output in EventObject::Track print
27171 atomically. Really avoids a lot of confusion if several threads are
27172 printfing at the same time.
27174 2008-03-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
27176 * debug.cpp: Add a couple of null checks.
27178 2008-03-06 Jeffrey Stedfast <fejj@novell.com>
27180 * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
27181 (TextLayout::Layout): Don't include trailing lwsp in the line
27182 width calculation unless it is the last line.
27183 (TextLayout::Layout): Don't include trailing empty lines in the
27184 height calculation.
27186 2008-03-06 Chris Toshok <toshok@ximian.com>
27188 * clock.h, clock.cpp: some changes to make TimeManager a
27189 per-surface item, instead of a singleton/global. The time manager
27190 creates a root clock group, just like Surface used to, which is
27191 the parent of all storyboards for a surface.
27193 * dirty.h, dirty.cpp: remove the method prototypes and globals -
27194 switch everything to be Surface:: methods.
27196 * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
27197 for the root clock, and create a TimeManager instead. Also, add
27198 the dirty methods/fields to Surface, even though the
27199 implementation still lives in dirty.cpp. Also, call
27200 toplevel->SetSurface(NULL) early in our dtor so that elements can
27201 react before, e.g., the time manager has been destroyed.
27203 * media.h, media.cpp: use the surface's TimeManager instead of a
27204 global one. Also override SetSurface so we can tell if we're
27205 losing access to it, and remove our timeout accordingly.
27207 * mplayer.cpp: use the media element's TimeManager.
27209 * visual.h, visual.cpp: add GetTimeManager() method, which just
27210 does GetSurface()->GetTimeManager().
27212 * dependencyobject.cpp (base_unref_delayed): as much as I hate to
27213 do this, use a g_idle instead of a tick call here, since we have
27214 no access to the surface.
27216 * animation.cpp (Storyboard::Begin): the surface no longer has the
27217 root clock group, the surface's TimeManager does.
27219 * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
27222 * uielement.h, uielement.cpp: translate global dirty calls into
27223 surface calls, and override SetSurface to remove ourselves from
27224 the dirty list if we're losing our surface.
27226 * eventargs.cpp: translate global dirty calls into surface calls.
27228 2008-03-06 Michael Dominic K. <mdk@mdk.am>
27230 * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
27231 child clocks. Othewise children always get a small delta and keep
27232 going beyond the parent Duration bounds. Fixes the contrained
27233 storyboard examples.
27235 Also making the forward/backward ComputeNewTime behavior depend on
27236 'forward' instead of out_delta (which can be 0 if hitting bounds).
27238 2008-03-06 Sebastien Pouliot <sebastien@ximian.com>
27240 * transform.cpp: Fix Matrix default values to match identity
27241 matrix (and fix one js unit test).
27243 2008-03-05 Larry Ewing <lewing@novell.com>
27245 * shape.cpp: drop the code that checks stretch when building the
27246 paths for polyline and polygon. Fix the condition for translation.
27248 2008-03-05 Larry Ewing <lewing@novell.com>
27251 * shape.cpp: refactor the stretch code slightly and fix the
27252 original stretch tests (that passed the harness but are clearly
27255 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
27257 * media.h: Made destructors in objects deriving from EventObject protected,
27258 preventing 'delete obj' and stack-allocation for these objects.
27260 * playlist.cpp: Can't delete downloaders anymore, unref it.
27262 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
27264 * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
27265 dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
27266 namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
27267 trigger.h, uielement.h, visual.h: Made destructors in objects deriving
27268 from EventObject protected, preventing 'delete obj' and stack-allocation
27270 * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
27271 * dirty.h: Added header.
27273 2008-03-05 Chris Toshok <toshok@ximian.com>
27275 * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
27276 front-to-back rendering the default.
27278 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
27280 * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
27281 trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
27282 media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
27283 runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
27284 calldata instead of a gpointer.
27285 * error.h: Added EventArgs, a base class for all *EventArgs.
27286 * collection.h: Make ChangeEventArgs inherit from EventArgs.
27287 * uielement.cpp: Create all *EventArgs on the heap and simply the code a
27289 * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
27290 * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
27291 *EventArgs. Added MarkerReachedEventArgs.
27292 * brush.cpp: Updated event handling to take an EventArgs* calldata instead
27293 of a gpointer. ~ImageBrush: don't delete, unref.
27295 2008-03-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
27297 * value.cpp: Fix warning.
27299 2008-03-05 Larry Ewing <lewing@novell.com>
27301 * shape.cpp: Fix line, polyline and polygon to apply stretches
27302 properly (modulo pesimistic shape bounds bugs). Mostly fixes
27303 test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
27304 and test-shape-polygon-stretch2.xaml.
27306 * shape.h: move stretch transform out of Path and into Shape.
27309 * stylus.cpp: include the strokes in the subtree bounds so that we
27310 will get invalidations and update bounds when the collection
27311 changes. There are still potential bounds issues point changes,
27312 those are being looked into. Fixes invalidation issues in
27313 test-inkpresenter-position and test-inkpresenter-scale.
27315 2008-03-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
27317 * xaml.cpp: Add a null at the end of the namespace array.
27319 2008-03-05 Jeffrey Stedfast <fejj@novell.com>
27321 * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
27322 white space into a simple space.
27323 (TextLayout::Layout): Treat embedded \n's as LineBreaks
27324 (TextLayout::Layout): When calculating the width of a line that
27325 ends in a space, don't include the width of the space char -
27326 Silverlight doesn't seem to.
27327 (TextLayout::Layout): Don't pad the height. Don't pad the width
27328 either, altho it seems like a padding of +2.0 is about right but
27329 ONLY if the text is in a canvas? See OMTextInline.htm's
27330 actualWidth/Height measurements as well as the out-of-tree
27333 * xaml.cpp (char_data_handler): Always create the GString cdata,
27334 we need to note leading lwsp which the old implementation didn't.
27335 (flush_char_data): Try to emulate Silverlight's chug/chomp
27336 behavior more closely.
27338 2008-03-05 Chris Toshok <toshok@ximian.com>
27340 * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
27341 to panel's OnSubPropertyChanged if we don't handle it.
27343 * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
27344 make sure we don't call this method with NULL args. Also, remove
27345 larry's g_warning (which wasn't the case, i tested with sprawl!),
27346 and also remove the check for matching property/parent type for
27347 attached properties. this will break controls.
27349 * transform.h, transform.cpp: it used to be that logical parents
27350 of children could rely on OnSubPropertyChanged being invoked for
27351 any property change. This is no longer the case - the only
27352 instance where it still happens is if there's an attached property
27353 involved. All other cases have to use OnCollectionChanged. So,
27354 switch OnSubPropertyChanged to OnCollectionChanged here.
27356 2008-03-05 Jeffrey Stedfast <fejj@novell.com>
27358 * text.cpp (TextBlock::OnCollectionChanged): We need to update
27359 bounds/text even if element_args is NULL (because adding/removing
27360 an item still changes our text).
27361 (Inline::OnPropertyChanged): Use args->new_value.
27363 2008-03-05 Chris Toshok <toshok@ximian.com>
27365 * transform.h, transform.cpp: remove
27366 TransformCollection::OnSubPropertyChanged. it was gumming up the
27369 2008-03-05 Larry Ewing <lewing@novell.com>
27371 * shape.cpp: disable the shape caching code for now unless
27372 USE_OPT_SHAPE_SURFACE_CACHING=1.
27374 2008-03-05 Michael Dominic K. <mdk@mdk.am>
27379 * xaml.cpp: Taking out all the enum->str (and vice versa) code from
27380 xaml.cpp and putting it into a new file -> enum.c + some utilities.
27382 The enum<->str code is not specific to xaml and is usefull from plugin as
27385 2008-03-05 Stephane Delcroix <sdelcroix@novell.com>
27387 * media.cpp: close the pixbuf_loader to load the small images too.
27389 2008-03-04 Chris Toshok <toshok@ximian.com>
27391 * runtime.cpp (Surface::expose_to_drawable): re-enable the
27392 clearing of the cairo surface, but only if we have a
27393 widget (i.e. not in the windowless plugin case.) Should fix
27394 translucent desklets without breaking the plugin.
27396 2008-03-04 Chris Toshok <toshok@ximian.com>
27398 [ rather large change, reworking much of the property change event
27399 system to be a little smaller api surface-wise, and also cleaning
27400 up uses of it to remove some of the accumulated cruft that we'd
27401 developed over the past 10 months.]
27403 * dependencyobject.h, dependencyobject.cpp: A few key changes:
27405 1. Attach -> AddPropertyChangeListener
27406 Detach -> RemovePropertyChangeListener
27407 NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
27409 This was done to remove the confusion between "attached"
27410 properties and our use of the word "attach" to mean "listen for
27411 property changes". Attached properties are those which
27412 implicitly notify the parent when they're changed.
27414 OnChildPropertyChanged is gone. Canvas (the only user of it)
27415 now uses OnSubPropertyChanged to deal with child property
27418 2. *PropertyChanged methods take a
27419 structure (PropertyChangedEventArgs) that contains the
27420 DependencyProperty, as well as the old and new values of it.
27421 This was to remove the need for almost every
27422 OnPropertyChangedMethod to immediately call GetValue on the
27423 property. Passing the old value requires changing the
27424 current_values hash to not have a value destructor, so we have
27425 to manually delete values again.
27427 3. Reordered the args for
27428 AddPropertyChangeListener/RemovePropertyChangeListener so that
27429 the listener comes first and the second arg defaults to NULL.
27430 Cleans up a bit of the use of this method globally.
27432 * animation.h, animation.cpp: track OnSubPropertyChanged changes.
27434 * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
27435 LinearGradientBrush::OnPropertyChanged,
27436 RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
27438 also lots of changes to use args->new_value instead of calling
27439 GetValue(property).
27441 Clear up confusion regarding the meaning of the property passed to
27442 AddPropertyChangeListener.
27444 * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
27445 OnSubPropertyChanged.
27447 * collection.h, collection.cpp (Node::Node): don't add parent as a
27448 listener for every property change here. We handle this
27449 specifically (and automatically) in
27450 DependencyObject::NotifyListenersOfPropertyChange, but only for
27451 attached properties.
27452 (Node::~Node): don't remove the listener here either.
27454 lots of tracking the DO api changes here too.
27456 * control.h, control.cpp: track On*PropertyChanged changes.
27458 * font.cpp: fix some warnings
27460 * frameworkelement.h, frameworkelement.cpp: track
27461 On*PropertyChanged changes.
27463 * geometry.h, geometry.cpp: track On*PropertyChanged changes.
27465 * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
27466 lot of the empty blocks here - there's nothing to do for these
27467 properties, so we might as well not bloat the code. Also, use
27468 new_value when we can.
27469 (Image::DownloaderComplete): add a (I hope) suitably nasty comment
27470 about calling brush->OnPropertyChanged directly. code shouldn't
27471 do this, we should figure out if we can just set the property, and
27472 if so, do that. otherwise something else is broken.
27473 (Image::OnPropertyChanged): use new_value where we can.
27475 * panel.h, panel.cpp: remove the cached background field. It
27476 wasn't used except to Attach/ref + Detach/unref it, and that's
27477 handled automatically by the DependencyProperty machinery.
27478 Otherwise just track the On*PropertyChanged api changes.
27480 * shape.h, shape.cpp: similarly, we don't need to ref/attach our
27481 cached stroke and fill fields. They're populated for us (and
27482 ref'ed/unref'ed as needed), so we don't need anything additional
27483 here. Use new_value instead of GetValue in OnPropertyChanged.
27484 Also, factor out some redundant code from all the subclass
27485 OnPropertyChanged methods that was nearly the same as the
27486 Shape::OnPropertyChanged code for it.
27488 * stylus.h, stylus.cpp: On*PropertyChanged api changes.
27490 * text.h, text.cpp: mostly On*PropertyChanged api changes, and
27491 lots of using new_value instead of GetValue, but also get rid of
27492 the cached TextBlock foreground instance field. It's easy enough
27493 to fetch when we need it in the ::Paint method, and the
27494 dependencyobject stuff already refs and attaches to it.
27496 * transform.h, transform.cpp: lots of On*PropertyChanged api
27497 changes, and using new_value instead of GetValue.
27499 * uielement.h, uielement.cpp: remove the cached opacityMask
27500 field (it wasn't used except for attach/detach, which is handled
27501 for us.) The usual On*PropertyChanged changes as well as using
27502 new_value instead of GetValue.
27504 2008-03-04 Jeffrey Stedfast <fejj@novell.com>
27506 * xaml.cpp (style_simulations_map): There's only one
27507 StyleSimulation value, and that is None.
27509 * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
27510 width and the text is not part of the first run on a line, break
27511 at the beginning of the Run. This seems to be what Silverlight
27512 does in OMTextInline.htm.
27514 2008-03-04 Larry Ewing <lewing@novell.com>
27516 * eventargs.cpp: update the dirty list before trying calculating
27517 relative locations.
27519 * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
27520 here so that our hit testing has up to date bounds.
27523 * dirty.h: remove the prototypes for up/down since it isn't safe
27524 to split the up/down passes.
27526 * src/uielement.cpp: remove dirty processing.
27528 2008-03-04 Stephane Delcroix <sdelcroix@novell.com>
27530 * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
27531 create the pixbuf from a file, allowing partial rendering of broken
27532 imagefiles, like in Image.htm
27534 2008-03-04 Jeffrey Stedfast <fejj@novell.com>
27536 * text.cpp (Inline::GetDefaultValue): Implemented.
27538 2008-03-04 Michael Dominic K. <mdk@mdk.am>
27540 * src/uielement.cpp: When calling uielement_transform_point, make sure our
27541 transforms are up-to-date (not dirty).
27543 Since we're updating the transform matrices only in the expose (dirty)
27544 callback it can happen that two ie. mouse events arrive before we get to
27545 the expose. If the first mouse event invalidated the transform and the
27546 second one relies on the transform (ie. tries to obtain relative mouse
27547 position) it'd get bogus values since the transform has not been
27550 Fixes the drag & drop behaviour in SL ink journal (the selection tool).
27553 2008-03-04 Michael Dominic K. <mdk@mdk.am>
27556 * src/dirty.h: Splitting the process_dirty_elements () into two individual
27557 chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
27558 process_dirty_elements () now calls both.
27560 The point here is that we need to process down dirty elements (call
27561 process_down_dirty_elements ()) from other contextes as well.
27563 2008-03-03 Larry Ewing <lewing@novell.com>
27565 * uielement.cpp: Call FullInvalidate when clip changes so that
27566 our subtree bounds are updated and invalidated. Make sure we
27567 don't reset the forced invalidate flag.
27569 * dirty.cpp: invalidate subtree bounds on forced invalidations.
27570 Fixes test-clip-invalid-update.htm.
27572 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
27574 * text.cpp (TextBlock::GetText): New method to generate a string
27575 representing the Text property from the inlines.
27576 (TextBlock::SetText): New method (split out from the old
27577 ::SetValue code) to parse the newly set text string into a list of
27578 Inlines and update out InlinesProperty if changed. Returns whether
27579 or not the inlines property changed.
27580 (TextBlock::OnPropertyChanged): Call SetText() to update out
27581 Inlines if the TextProperty value was changed by an outside
27582 source. If the InlinesProperty was changed by an outside source,
27583 update our TextProperty.
27584 (TextBlock::OnCollectionChanged): Update our TextProperty if an
27585 Inline was added or removed or if a Run element had its
27586 TextProperty changed.
27588 2008-03-03 Chris Toshok <toshok@ximian.com>
27590 * animation.cpp: plug a memory leak in the 3
27591 UsingKeyFrames::GetCurrentValue methods.
27593 2008-03-03 Chris Toshok <toshok@ximian.com>
27595 * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
27596 return a cairo_matrix_t instead of a pointer to the
27597 internal (mutable) field, and update its only use.
27599 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
27601 * media.cpp (media_element_get_audio_stream_index): Fixed to
27602 handle nullable value.
27603 (media_element_set_audio_stream_index): Same.
27604 (media_init): Register the AudioStreamIndex property as being
27606 (MediaElement::Reinitialize): Set the CurrentStateProperty to
27609 2008-03-03 Jeffrey Stedfast <fejj@novell.com>
27611 * media.cpp (media_init): Register AudioStreamCount,
27612 BufferingProgress, CanPause, CanSeek, CurrentState,
27613 NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
27614 as being read-only.
27616 * text.cpp (text_init): Register ActualWidth and ActualHeight
27617 properties as ReadOnly.
27619 * transform.cpp (Matrix::GetValue): Removed.
27620 (Matrix::SetValue): Removed.
27621 (Matrix::OnPropertyChanged): Implemented.
27623 2008-03-01 Larry Ewing <lewing@novell.com>
27625 * shape.cpp (Shape::DoDraw): refactor slightly.
27627 * geometry.cpp: fix extents calculation when there is only a fill
27628 on the shape. Fixes test-path-stretch-fill-extents.xaml.
27630 * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
27631 negative widths or heights have no bounds.
27632 (Shape::DoDraw): Silence warning.
27634 2008-02-29 Larry Ewing <lewing@novell.com>
27636 * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
27637 match StretchAndShapes.xaml.
27639 * collection.cpp (VisualCollection::Remove): don't fire
27640 VisualRemoved unless we are going to actually remove the item.
27641 Fixes OM_RemoveClearRemoveAt.htm.
27643 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
27645 * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
27646 the z_sorted array before sorting so that we can be sure the end
27647 result will be a stable sort.
27648 (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
27649 because we need to take index into account. Instead, grow our
27650 array and call ResortByZIndex().
27652 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
27654 * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
27655 an even more fun memory corruption bug.
27657 2008-02-29 Larry Ewing <lewing@novell.com>
27660 src/frameworkelement.cpp:
27667 src/uielement.cpp: Fix Rect::Transform, replace all occurances of
27668 bounding_rect_for_transformed_rect with Rect::Transform.
27670 2008-02-29 Larry Ewing <lewing@novell.com>
27672 * geometry.cpp: apply transform to all bounds calculations. Fixes
27673 test-geometry-bounds.xaml.
27675 2008-02-29 Larry Ewing <lewing@novell.com>
27677 * geometry.cpp: Make sure geometry groups draw their children
27678 rather than just copying the paths so that local transforms are
27681 2008-02-29 Jeffrey Stedfast <fejj@novell.com>
27683 * text.cpp (TextBlock::GetValue): Fixed memory leak.
27685 * media.cpp (MediaElement::GetValue): Fixed compile warning.
27687 * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
27688 rather than calling inline_get_*() which use GetValue().
27690 * font.cpp (TextFont::TextFont): Don't let the underline thickness
27693 * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
27695 (DependencyObject::GetValue): Simplified.
27696 (DependencyObject::GetDefaultValue): New method to get the default
27697 value for a property (now used by GetValue()).
27699 2008-02-29 Larry Ewing <lewing@novell.com>
27701 * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
27702 transform into account when computing bounds. Fixes
27703 CGeometry_AddToRenderList.xaml
27705 2008-02-29 Larry Ewing <lewing@novell.com>
27708 * shape.cpp: export calc_line_bounds.
27710 * geometry.cpp: use calc_line_bounds from shape.h. Fixes bounds
27711 problems on Animation_TargetingAndHandoff.xaml.
27713 2008-02-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
27715 * pipeline.cpp: Add a missing const modifier.
27717 2008-02-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
27719 * mplayer.cpp: Use the first streams found in the media, not the last.
27721 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
27723 * stylus.cpp: if there's an outline, draw a line of at least 2px.
27725 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
27727 * brush.cpp: No longer ignore out-of-bounds offest in
27728 SetupGradient. Add the bounds stop with linearinterpolation
27729 between the nearest stop and the outofbounds one. Handle the
27730 degenerated case with only outofbounds stops.
27732 2008-02-28 Michael Dominic K. <mdk@mdk.am>
27734 * shape.cpp: Commenting a left-over debug g_warning.
27736 Additionally adding a protection against NULL in cache-size reporting (as
27737 experienced by rolf). However, if GetSurface () returns NULL in the Render
27738 callback... I guess we're screwed anyways.
27740 2008-02-28 Michael Dominic K. <mdk@mdk.am>
27743 * xaml.h: Adding convert_property_value_to_enum_str function to
27744 check/convert if the value for the given property can be represented by an
27747 It would be nicer to mover all the enums tables/resolving to a separate
27748 place in future instead of gluing it to xaml.cpp.
27750 2008-02-28 Stephane Delcroix <sdelcroix@novell.com>
27752 * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
27755 2008-02-27 Jeffrey Stedfast <fejj@novell.com>
27757 * text.cpp (Glyphs::Render): Use horiBearingX for the first char
27758 in the Glyphs string just like we do for TextBlock rendering.
27760 2008-02-27 Jeffrey Stedfast <fejj@novell.com>
27762 Fixes the last remaining issue in the TextRegressions.htm test.
27764 * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
27765 non-autogenerated <Run>'s.
27767 * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
27768 from the TextBlock's Text property as being auto-generated.
27770 2008-02-27 Larry Ewing <lewing@novell.com>
27772 * shape.cpp: change the shape surface cache to cache in device
27773 coordinates and rework the candidate restrictions to reject
27774 huge shapes and allow scaled caches.
27776 2008-02-27 Larry Ewing <lewing@novell.com>
27778 * shape.cpp: center the filled image within the new bounds.
27780 2008-02-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
27782 * media.h, media.cpp: When a media is opened, seek to the current
27785 * value.cpp: ToString: Return 'NULL' if we're null.
27787 2008-02-27 Michael Dominic K. <mdk@mdk.am>
27789 * src/animation.cpp: When storyboard is completed, Teardown the clocks
27790 only if we're realling stopping (not holding). Fixes the
27791 StoryBoard_ModifyProperty test.
27793 2008-02-27 Michael Dominic K. <mdk@mdk.am>
27795 * clock.cpp: Make sure we actually hit the our_delta < 0 code
27796 path. Fixes the AutoReversed/Repeated animations.
27798 2008-02-27 Michael Dominic K. <mdk@mdk.am>
27800 * shape.cpp: More cases to invalidate (free mem) of the surface cache.
27802 2008-02-26 Jeffrey Stedfast <fejj@novell.com>
27804 * font.cpp (TextFont::TextFont): Precalculate underline position
27805 and thickness. Also, we need to adjust the position based on 1/2
27806 the underline thickness.
27807 (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
27808 (TextLayout::RenderLine): Same.
27810 2008-02-26 Chris Toshok <toshok@ximian.com>
27812 * runtime.cpp (runtime_cairo_create): take the visual too, so the
27813 plugin can send ours in - we can't rely on the pixmap having a
27814 visual associated with it, because it's initialized with the
27815 _foreign api which doesn't fill in the colormap. yay.
27816 (Surface::Surface): if we're windowless don't create the widget.
27817 also, init render/render_data and invalidate/invalidate_data to
27819 (Surface::ConnectEvents): exit early if we're windowless.
27820 (Surface::Invalidate): call through the invalidate function if
27821 there is one. otherwise, default behavior (if we have a widget).
27822 (Surface::Paint): exit early if no toplevel.
27823 (Surface::render_cb): call through the render function if there is
27825 (Surface::expose_to_drawable): this is most of the guts of
27826 expose_callback, changed to handle the case where we're already
27827 drawing to the backbuffer (in the windowless case) and therefore
27828 don't need the temporary pixmap. Also, commented out some code
27829 that clears the contents - do we actually need this? The comment
27830 for it is enormous...
27831 (Surface::expose_event_callback): just call expose_to_drawable
27832 with the widget's window.
27834 * runtime.h (class Surface): we need to make the gtk callbacks
27835 public since the plugin will be invoking them directly. Also,
27836 switch the event methods to returning bools, and add a new method
27837 called expose_to_drawable, so the plugin can direct rendering to a
27838 pixmap in the windowless case.
27840 * uielement.h, uielement.cpp: change all the Emit* methods to
27843 * dependencyobject.h, dependency.cpp: make EventObject::Emit
27844 return true if there were handlers for the event, and false
27847 2008-02-26 Jeffrey Stedfast <fejj@novell.com>
27849 * text.cpp (TextBlock::TextBlock): Removed the useless
27850 text_block_set_text() call. This was just a broken hack meant to
27851 do what MDK's previous commit fixed the right way.
27853 * font.cpp (TextFont::UnderlinePosition): Fixed to take font
27854 y_scale metrics into consideration.
27855 (TextFont::UnderlineThickness): Same.
27857 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27859 * src/text.cpp: TextBlock when constructed by default has an empty
27860 Inlines collection instead of NULL. Along with all the previous
27861 commits fixes the OM_CreateAddInsert.htm test.
27863 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27865 * src/collection.cpp: Don't allow collection insert at negative
27868 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27870 * src/collection.cpp: Don't add the object to the collection if it
27871 already contains the object (return -1 instead).
27873 2008-02-26 Michael Dominic K. <mdk@mdk.am>
27875 * src/animation.cpp:
27877 * src/collection.cpp:
27878 * src/collection.h: The "Add" method of collections returns int (index of
27879 the element added), not bool. As explained in:
27881 http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
27883 2008-02-25 Jeffrey Stedfast <fejj@novell.com>
27885 * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
27886 through FontConfig, we need to parse the font's family name to
27887 extract styleistic info so we can do proper font name matching and
27888 style matching (e.g. "Myriad Pro Cond Black Italic" should match
27889 "Myriad Pro, Condensed Black Italic").
27891 2008-02-25 Chris Toshok <toshok@ximian.com>
27893 * runtime.h, runtime.cpp: s/drawing_area/widget and
27894 s/DrawingArea/Widget
27898 2008-02-25 Michael Dominic K. <mdk@mdk.am>
27900 * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
27901 can be called on the element to give it a hint that it should free it's
27902 cache for the time being.
27904 * src/collection.cpp:
27906 * src/panel.h: Forward CacheInvalidateHint to all children.
27909 * src/shape.h: Destroy the surface and path cache when hinted.
27911 In total improves our memory usage with surface/path caching, ie. in the
27914 2008-02-22 Michael Dominic K. <mdk@mdk.am>
27919 * src/shape.h: Adding functionality to report the cache size usage. By
27920 default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on.
27922 2008-02-22 Michael Dominic K. <mdk@mdk.am>
27924 * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
27925 to expose a few more pixels but helps with surface caching.
27927 2008-02-22 Rolf Bjarne Kvinge <RKvinge@novell.com>
27929 * downloader.cpp: downloader_get_response_file: remove any directory
27930 components from the part name, otherwise the creation of the tmp file
27931 fails. If we're aborted, don't call any callbacks.
27932 * media.cpp: If we have a downloader and SetSource is called with a new
27933 downloader, abort the previous download, not only unref it, otherwise
27934 our callbacks and events may still get called from the old downloader.
27936 2008-02-21 Jeffrey Stedfast <fejj@novell.com>
27938 * font.cpp (TextFont::TextFont): Simplified the fallback code.
27940 2008-02-21 Jeffrey Stedfast <fejj@novell.com>
27944 * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
27946 (Glyphs::Layout): Properly handle glyph clusters.
27947 (Glyphs::Render): Same.
27949 2008-02-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
27951 * media.cpp: When aborting a downloader, null out the write
27954 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27956 * src/clock.cpp: Emit the Completed event when Filling as
27957 well. Together with prev commit fixes: #359024 and #324935.
27959 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27961 * src/animation.cpp:
27962 * src/animation.h: Detach the AnimationStorage update handler from the
27963 clock when the clock is stopped -- prevents us from overriding the (just
27964 reset) base value with another update.
27966 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27968 * src/value.cpp: Implementing ToString () for DOUBLE.
27970 2008-02-21 Michael Dominic K. <mdk@mdk.am>
27972 * src/color.cpp: A slightly more relaxed/tolerant way of parsing
27973 the colors... it's the web and it's broken by default. Fixes:
27974 #362287 (the US candidates website).
27976 2008-02-21 Stephane Delcroix <sdelcroix@novell.com>
27978 * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
27980 2008-02-20 Jeffrey Stedfast <fejj@novell.com>
27982 Fixes the TextBlockFontDownloads.htm test.
27984 * font.cpp (TextFontDescription::Set*): If the new value is not
27985 the same as the old, invalidate the loaded TextFont.
27986 (TextFont::TextFont): Always compare family names unless we're
27987 requesting the "Sans" (e.g. last) fallback font.
27988 (TextFont::TextFont): If the requested family name does not match
27989 the specified font file, fall back to a system font of the same
27990 name (we were doing this for zip archievs before, but not for
27991 specified ttf font files).
27993 * text.cpp (TextBlock::SetFontSource): If the downloader is null,
27994 set the font filename to null and invalidate the textblock.
27996 2008-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
27998 * media.cpp: Add a printf to inform when we're trying to load an
27999 mms stream. Helps a lot when trying to identify sites depending
28000 on mms/streaming support.
28002 * runtime.cpp: Unref debug_selected_element upon
28003 destruction. Fixes a leak.
28005 2008-02-20 Michael Dominic K. <mdk@mdk.am>
28007 * src/shape.cpp: Fixing the shape caching to work also with
28008 Path/Geometry. Fixes: #362021.
28010 2008-02-20 Rolf Bjarne Kvinge <RKvinge@novell.com>
28012 * media.cpp: MediaElement/Image: Remove event handlers when we abort the
28013 downloader, otherwise the handlers might be called after we're
28016 2008-02-19 Jeffrey Stedfast <fejj@novell.com>
28018 * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
28019 know which, if any, parts of the URI to hide.
28020 (Uri::Parse): If we don't have a protocol, don't simply assume
28021 that the entire string is the filename. We might have a fragment
28022 attached, for example.
28024 * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
28025 get the font index (if a fragment is set). Also, use the parsed
28026 Uri's ::ToString() method to hide the fragment so that requesting
28027 the file actually works.
28028 (Glyphs::DownloaderComplete): Don't need to parse the URI here
28029 anymore, we've already got the index from OnPropertyChanged().
28031 2008-02-19 Jackson Harper <jackson@ximian.com>
28033 * xaml.cpp: Parser error if we can't find the owner type or
28034 property name when setting properties.
28036 2008-02-19 Sebastien Pouliot <sebastien@ximian.com>
28038 * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
28040 2008-02-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
28042 * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
28044 * media.cpp: Remove printf.
28046 2008-02-19 Sebastien Pouliot <sebastien@ximian.com>
28048 * moon-path.c: #if out moon_get_origin since it's not used
28049 anymore. Change cairo_path_display output to be easier to read
28050 with negative numbers.
28052 2008-02-18 Michael Dominic K. <mdk@mdk.am>
28055 * src/media.h: Load images slightly faster by skipping one pixbuf blit and
28056 doing the expansion + conversion in one step.
28058 Also fixing an ugly memory leak where all RGBA images loaded were leaked
28059 (two times in memory).
28061 2008-02-15 Michael Dominic K. <mdk@mdk.am>
28063 * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
28064 being called from a timeout (unprotected) and we're potentially calling
28065 gdk_ invalidation functions. I think it only matters (in this case)
28066 on non-X backends though.
28068 2008-02-15 Michael Dominic K. <mdk@mdk.am>
28070 * src/uielement.cpp: Moving the debug timers for rendering slightly and
28071 uncommenting them so that they work when TIMERS is enabled.
28073 2008-02-15 Michael Dominic K. <mdk@mdk.am>
28076 * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
28077 default) that changes your 'd' key into a special debug key. When pressed,
28078 a message is printed to the console (region start). When pressed again,
28079 another message is printed (region end). This is usefull to see what
28080 happens in a particular part of the program timeline (ie. after click).
28082 Makes sense obviously only with timers debugging on and stuff.
28084 2008-02-14 Michael Dominic K. <mdk@mdk.am>
28086 * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
28087 shows that SL runs by default at something around that. Also, with the
28088 recent fixes some sites are suffering from 24 (can run/look much better
28091 2008-02-14 Michael Dominic K. <mdk@mdk.am>
28094 * src/shape.h: Adding surface caching for shapes. The strategy
28095 is to cache big surfaces that have little transformations (such as
28096 ie. backgrounds, fade overlays, etc.). Improves performance greatly
28097 for many sites (ie. Showcase).
28099 2008-02-14 Michael Dominic K. <mdk@mdk.am>
28101 * src/uielement.cpp: Commenting out the timer in post-pre render as it's
28102 broken and blocks the compilation with timers on.
28104 2008-02-12 Michael Dominic K. <mdk@mdk.am>
28106 * src/animation.cpp:
28107 * src/animation.h: Massive fix for our KeySpline animation calculation
28108 routines (which were broken and giving wrong values). According to:
28110 http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
28112 "...think of the horizontal axis as the pace with which the interpolation
28113 proceeds along the timing interval. The vertical axis is the resulting
28114 value for the animation's progress, yielded by the function that underlies
28115 the keySplines property. Another way of describing this is that the
28116 horizontal axis is the input unit time for the interval, and the vertical
28117 axis is the output unit time."
28119 Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
28120 a little bit ugly -- we waste 256 bytes per KeySpline to store
28121 pre-calculated values in a lookup table. But maybe it's not soo bad, since
28122 balf function (from prev implementation) was coming up top in the
28125 The only other way I can (currently) think of would be to solve a cubic
28126 equation each time we poll the KeySpline for a value. That would be,
28127 however, a *massive* performance hit.
28129 Hence the lookup solution for now (note: the generation of the table is
28130 very fast, no cubics involved).
28132 2008-02-11 Michael Dominic K. <mdk@mdk.am>
28134 * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
28135 as it should... yes, our redraws are slow, but not *that* slow ;)
28137 2008-02-09 Michael Dominic K. <mdk@mdk.am>
28139 * src/mplayer.cpp: If we have no audio devices present in the system,
28140 launch a special audio loop variant to still read/fetch audio (and discard
28141 it) so that the video playback is not blocked. Fixes: #341835.
28143 2008-02-08 Jeffrey Stedfast <fejj@novell.com>
28145 * font.cpp (TextFont::TextFont): If the loaded font's family_name
28146 doesn't match the requested family name, fall back to the default
28147 font (it means the requested font doesn't exist on the system).
28148 (TextLayout::Layout): Added a 'first_char' state variable that can
28149 be used to figure out if if the current char is the first char on
28150 a line. This is needed for the wrapping logic.
28152 2008-02-08 Jeffrey Stedfast <fejj@novell.com>
28154 Fixes some text layout bugs in TextBlockFontFamilies.xaml
28156 * xaml.cpp (flush_char_data): Now takes a string 'next_element'
28157 argument rather than a bool 'start' argument so that we can make
28158 sure that the previous and next element types are <Run>'s because
28159 lwsp between a <LineBreak/> and a <Run> or a </Run> and a
28160 <LineBreak/> should be ignored. Also, never g_strchomp() this
28162 (start_element_handler): Pass the name of the next element to
28164 (end_element_handler): Pass NULL to flush_char_data() as the
28165 next_element argument.
28167 2008-02-08 Chris Toshok <toshok@ximian.com>
28169 * media.cpp (MediaElement::Render): reorder things so that we're
28170 calculating the brush pattern matrix with the snapped pixels.
28172 2008-02-08 Stephane Delcroix <sdelcroix@novell.com>
28174 * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
28176 2008-02-07 Chris Toshok <toshok@ximian.com>
28178 * media.cpp (MediaElement::Render): snap to the pixel grid if
28179 we're not rotated/skewed.
28181 2008-02-07 Sebastien Pouliot <sebastien@ximian.com>
28183 * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
28185 2008-02-07 Larry Ewing <lewing@novell.com>
28187 * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
28188 same as out of bounds stops.
28190 * shape.cpp: cache the results of CompouteShapeBounds in
28191 extents rect, use that value in GetSizeForBrush.
28193 2008-02-07 Jeffrey Stedfast <fejj@novell.com>
28195 Fixes a rendering glitch for xaml similar to:
28198 <Run FontStyle="Italic">This </Run>is Dodger Blue
28201 * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
28202 setting the value of a content_property (e.g. a Run).
28204 2008-02-07 Michael Dominic K. <mdk@mdk.am>
28206 * src/color.cpp: Added support to parse scRGB-style color specificators
28207 (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
28208 should produce accurate-enough colors for most uses.
28210 http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
28212 2008-02-07 Sebastien Pouliot <sebastien@ximian.com>
28214 * shape.cpp|h: Split ComputeBounds to avoid calling functions
28215 bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
28216 inside each shape. This will enable us to reuse the non-transformed
28217 value elsewhere too. This also fix (for me) the origin point that
28218 caused problems for some brushes. Started implementing methods
28219 ComputeLargestRectangle[Bounds] to optimize drawing.
28221 2008-02-06 Chris Toshok <toshok@ximian.com>
28223 * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
28224 want the untransformed size of the element. otherwise we end up
28225 with a pattern matrix that scales things too large given that
28226 we're also scaling the element. Fixes fullscreen mode in halo3
28227 and /fox video players (bug #335845).
28229 2008-02-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
28231 * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
28232 range, draw the current frame. If we're ahead of the range, do nothing
28233 (fixes some video/audio sync problems), and if we're behind drop frames.
28234 The range makes sure that we paint every frame even when the audio loop
28235 doesn't update the target pts as often as we're drawing video.
28237 2008-02-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
28239 * panel.cpp, runtime.cpp: Fix warnings.
28241 2008-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
28243 * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
28244 the entire loop, only when fetching packets. This allows packets to
28245 arrive from the pipeline while in the loop (especially noticable when
28246 decoding the video inside the loop).
28248 2008-02-06 Chris Toshok <toshok@ximian.com>
28250 * uielement.cpp (UIElement::FrontToBack): use the media state
28251 accessors, and don't exclude Buffering state - we could be
28252 buffering with a frame rendered.
28254 2008-02-06 Sebastien Pouliot <sebastien@ximian.com>
28256 * shape.cpp|h: Keep track if a rectangle has radii or not.
28257 * uielement.h: Add a flag for radii
28259 2008-02-06 Chris Toshok <toshok@ximian.com>
28261 * uielement.cpp (UIElement::FrontToBack): make sure
28262 media_element_get_current_state != NULL before we strcmp it.
28264 2008-02-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
28266 * src.mdp: Updated.
28268 2008-02-06 Stephane Delcroix <sdelcroix@novell.com>
28270 * brush.cpp: fix the radialgradientbrush setup.
28272 2008-02-05 Chris Toshok <toshok@ximian.com>
28274 * collection.cpp (Collection::EmitChanged): new method. Emit the
28275 Changed event and then call closure->OnCollectionChanged. Also
28276 replace all references to closure->OnCollectionChanged to
28279 * collection.h (class Collection): add ChangeEventArgs struct, and
28280 an EmitChanged method declaration.
28282 * type.h.in, type.cpp.in (Type::~Type): no need to free all the
28284 (Type::HideEvent): remove the event name from the hash so it's
28285 inaccessible from javascript.
28286 (Type::RegisterEvent): use g_hash_table_new_full so we can specify
28287 a destroy function for keys instead of doing the _foreach in the
28289 (types_init_manually): add the #if 0 here instead of type.cpp.
28291 (types_init_register_events): register a Changed event for
28294 2008-02-05 Jeffrey Stedfast <fejj@novell.com>
28296 * downloader.cpp (Downloader::ll_downloader_get_response_file):
28297 Simplified by using the new ExtractFile utility function from
28300 * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
28302 * utils.cpp: New collection of utility functions.
28304 2008-02-05 Jeffrey Stedfast <fejj@novell.com>
28306 * font.cpp: If a font is requested from a zip archive, extract the
28307 contents and try to figure out which font is the closest match to
28308 the one requested. Fixes bug #356044.
28310 2008-02-05 Chris Toshok <toshok@ximian.com>
28312 * uielement.cpp (UIElement::FrontToBack): enable the rectangle
28313 code, and make sure to round in the bounds we're subtracting.
28314 this was causing the flashing white border on silverlight.net/fox.
28316 2008-02-05 Sebastien Pouliot <sebastien@ximian.com>
28318 * shape.cpp: Use existing MIN macro. Use local variables when
28321 2008-02-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
28323 * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
28325 2008-02-05 Chris Toshok <toshok@ximian.com>
28327 * runtime.h, runtime.cpp: add support for a "selected" element
28328 when in debug mode. Also, make use of the Region methods instead
28329 of using region->gdkregion, which is private now.
28331 2008-02-05 Chris Toshok <toshok@ximian.com>
28333 * region.h, region.cpp (class Region): add Offset().
28335 2008-02-05 Sebastien Pouliot <sebastien@ximian.com>
28337 * geometry.cpp|h: PathGeometry does a Build (not a Draw) to
28338 populate it's moon_path (like others) so the data can always be
28340 * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
28341 from a moon_path (Stephane) and moon_merge to merge a subpath into
28344 2008-02-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
28346 * pipeline-ffmpeg.cpp: Remove another printf.
28348 2008-02-02 Jeffrey Stedfast <fejj@novell.com>
28350 * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
28352 (FileSource::Peek): Slightly better fix.
28354 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
28356 * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
28357 estimate the stream position if not known rather than reading data
28358 to find out as we don't have to return an exact stream position.
28360 2008-02-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
28362 * pipeline.h: Update comment.
28364 2008-02-01 Stephane Delcroix <sdelcroix@novell.com>
28368 * shape.cpp: rename GetOringin into GetOriginPoint
28370 * brush.cpp: implement a bad origin computation (based on bounds)
28373 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
28375 * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
28376 (FileSource::Peek): As before, only read as much as we need - but
28377 don't clobber what we had prebuffered, only clobber as much as w
28378 need to in order to make room for the new data - this way we make
28379 it more efficient to seek backward later (if need be).
28381 2008-02-01 Stephane Delcroix <sdelcroix@novell.com>
28384 * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
28385 from the path data instead of from bounds.
28387 * brush.cpp: translate the brushes with a translation matrix.
28389 2008-02-01 Larry Ewing <lewing@novell.com>
28391 * brush.cpp: Make sure we use the brush opacity when computing the
28394 2008-02-01 Jeffrey Stedfast <fejj@novell.com>
28396 * pipeline.cpp (FindMpegHeader): Now checks for Xing and
28397 Fraunhofer VBRI headers.
28399 2008-01-31 Chris Toshok <toshok@ximian.com>
28401 * uielement.h: include region.h
28403 * point.h: don't assume the right headers have been included
28404 before this file - include glib.h to make sure
28405 G_BEGIN_DECLS/G_END_DECLS is there.
28407 * region.h, region.cpp: split out the region code from
28410 * rect.h, rect.cpp: remove region code.
28412 * Makefile.am: add region.h/region.cpp
28414 2008-01-31 Chris Toshok <toshok@ximian.com>
28416 * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
28417 use Region::Draw instead).
28419 * panel.cpp: remove references to runtime_cairo_region, and switch
28420 to the new Region* copy ctor. also, use Region::IsEmpty instead
28421 of gdk_region_empty.
28423 * uielement.cpp: more region cleanup, removing references to
28424 GdkRegion in favor of our Region class. Also, commit (ifdef'ed
28425 out until the rendering glitch is fixed) the rectangle back to
28426 front special case code.
28428 2008-01-31 Chris Toshok <toshok@ximian.com>
28430 * rect.cpp (Region::Region): new overload which takes a Region*,
28431 so we don't have to access ->gdkregion everywhere when we copy a
28434 * rect.h (struct Rect): add a GrowBy method that takes both x and
28435 y deltas, and have the 1 parameter version call it.
28436 (class Region): add a copy ctor that takes a Region*.
28438 2008-01-31 Chris Toshok <toshok@ximian.com>
28440 * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
28441 and add it to the class, protected so subclasses can get at it.
28443 * stylus.cpp (InkPresenter::PostRender): given the ordering
28444 required, we have to c&p some of Panel::PostRender here to render
28445 the children. Chaining up to Canvas::PostRender at the start of
28446 the method would have caused the translucency/opacity mask code in
28447 UIElement::PostRender to be executed *before* we rendered our
28450 2008-01-31 Chris Toshok <toshok@ximian.com>
28452 * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
28453 RenderChildren to this, and chain up to Canvas::PostRender here,
28454 which will do the RenderChildren call if it needs to.
28456 2008-01-31 Chris Toshok <toshok@ximian.com>
28458 * panel.cpp (Panel::FrontToBack): simplify this a bunch with
28461 * brush.h (class Brush): remove GetTotalOpacity() which wasn't
28462 being used anywhere, and add IsOpaque() so that we can use it from
28463 the new front-to-back stuff (instead of duplicating code in Panel
28464 and Shape handling parts).
28466 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28468 * media.cpp: Update.
28470 2008-01-31 Chris Toshok <toshok@ximian.com>
28472 * media.cpp (MediaElement::MediaElement): fix build.
28473 (Image::Image): fix initialization order to quiet g++.
28475 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28477 * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
28478 implemented again. Added an ugly caught_up_with_seek value, used to
28479 determine if video is late due to a seek, in which case it shouldn't
28480 show any frames (fixes #356053).
28481 * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
28483 * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
28484 HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
28485 * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
28488 2008-01-31 Jeffrey Stedfast <fejj@novell.com>
28490 * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
28492 (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
28493 having our caller re-parse the header.
28494 (Mp3Demuxer::ReadHeader): Updated.
28496 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
28498 * brush.cpp: apply the correct offset to RadialGradientBrushes too.
28500 2008-01-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
28502 * clock.h: Added macros to convert between pts, milliseconds and timespans.
28503 * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
28504 0). Use the new macros when converting between time formats. Remove the
28505 AdvanceFrame timeout upon reinitialization. Implement a better buffering
28506 algorithm (and honor the BufferingTime property).
28507 * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
28508 pipeline is now normalized to start at 0. Use the new macros when
28509 converting between time formats.
28510 * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
28511 start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
28512 estimate the position of a pts. ProgressiveSource::CancelWait: only
28513 cancel if we're waiting, and then wait until actually cancelled.
28515 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
28518 * shape.h: GetOrigin for Polyline and Polygon
28520 2008-01-31 Stephane Delcroix <sdelcroix@novell.com>
28522 * uielement.h: add a GetOrigin ()
28525 * shape.h: implement GetOrigin for Path
28527 * brush.cpp: use GetOrigin as offset, fix the Crystal test.
28529 2008-01-30 Chris Toshok <toshok@ximian.com>
28531 * mplayer.h (class MediaPlayer): add rendered_frame.
28533 * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
28535 (MediaPlayer::Close): reset rendered_frame.
28536 (render_frame): set rendered_frame to true if we've successfully
28537 copied data into the video surface.
28539 * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
28540 to the pixbuf's has_alpha if USE_OPT_RGB24.
28542 * media.h (class Image): make the CachedSurface type and the
28543 instance field "surface" public, so the front to back stuff can
28544 get at it. Also, add "has_alpha" to it, since once the xlib
28545 surface has been created, we lose that information.
28547 * control.cpp (Control::FrontToBack): nothing to do but call
28548 FrontToBack on real_object.
28550 * control.h (class Control): add override for FrontToBack.
28552 * panel.cpp (Panel::FindStartingElement): get rid of this crap.
28553 it was broken and the wrong way to implement it.
28554 (Panel::Render): remove the RenderChildren call here, we do it in
28555 PostRender (and only if we're not rendering front to back)
28556 (Panel::PostRender): if we aren't rendering front to back, call
28558 (Panel::RenderChildren): remove references to FindStartingElement.
28559 (Panel::FrontToBack): this method is a little more complicated
28560 than UIElement::FrontToBack owing to the fact that we're
28561 flattening things to a list. We need to prepend a "cleanup node"
28562 first, before calling FrontToBack on our children, to do the
28563 Panel::PostRender stuff after our children have been rendered. We
28564 remove this cleanup node if none of the children have added
28565 themselves to the list, and our bounds (without the children)
28566 don't intersect the expose region. We apply the same logic to
28567 removing our rectangular bounds as the UIElement code does, but
28568 also have to take into account our background brush. We punt if
28569 any part of it is transparent, and only handle SolidColorBrush and
28570 GradientBrush subclasses.
28572 * panel.h (class Panel): override UIElement:: FrontToBack,
28573 PreRender, and PostRender.
28575 * uielement.cpp (UIElement::DoRender): factor out most of the guts
28576 of this method so it can be used in either front-to-back or
28577 back-to-front. Make sure to pass "false" as the front-to-back arg
28578 for PreRender and PostRender.
28579 (UIElement::FrontToBack): calculate the intersection of the expose
28580 region and our bounds. Add this region to the front of the render
28581 list, and then do some calculating to decide if we should remove
28582 it from consideration by elements lower than us in the display.
28583 Things like "are we opaque", "have we been rotated or skewed, such
28584 that our rectangular shape no longer fills the bounds entirely",
28585 stuff like that. We further limit subtracting in element type
28586 specific ways - right now just for MediaElement and Image with
28587 certain constraints (images can't have alpha, media elements must
28588 have a frame rendered, both types must fill their rectangle, etc).
28589 If everything passes, we remove our bounds from the expose region.
28590 (UIElement::PreRender): new method, do the things that DoRender
28591 used to do before calling Render.
28592 (UIElement::PostRender): new method, do the things that DoRender
28593 used to do after calling Render.
28595 * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
28596 so they can be used in panel.cpp. Also, add 3 new virtual
28597 methods (FrontToBack, PreRender, PostRender) as well as two
28598 callback methods to invoke the 2 latter ones.
28600 * runtime.cpp (overrides): add "render=ftb" and "render=btf"
28601 overrides (with btf the default) corresponding to
28602 RUNTIME_INIT_RENDER_FRONT_TO_BACK.
28603 (Surface::Paint): add support for front-to-back rendering. If
28604 it's enabled, make a FrontToBack pass on the fullscreen message
28605 and the toplevel element. This populates the render list with a
28606 back to front ordered list of elements to paint, along with the
28607 regions they need repainted. If the render list is empty for some
28608 reason (or if the user didn't select ftb rendering), we fall back
28609 to back to back-to-front rendering at the toplevel.
28610 (RenderNode::RenderNode): add ctor/dtor for RenderNode.
28612 * runtime.h: add the RenderNode class, used by the front to back
28615 * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
28618 2008-01-30 Jackson Harper <jackson@ximian.com>
28620 * xaml.cpp: Strip leading whitespace from xaml files.
28622 2008-01-30 Jackson Harper <jackson@ximian.com>
28624 * xaml.cpp: Handle more names for the default namespace.
28626 2008-01-30 Jackson Harper <jackson@ximian.com>
28628 * xaml.cpp: Add support for ucs4.
28630 2008-01-29 Jackson Harper <jackson@ximian.com>
28632 * xaml.cpp: pull in unistd.h
28634 2008-01-29 Jackson Harper <jackson@ximian.com>
28636 * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
28637 expat doesn't choke.
28639 2008-01-28 Chris Toshok <toshok@ximian.com>
28641 * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
28642 inplace, it returns the new rect.
28644 * uielement.cpp (UIElement::DoRender): same change.
28646 2008-01-28 Jeffrey Stedfast <fejj@novell.com>
28648 * pipeline.cpp (FindMpegHeader): Validate that the sequence is
28649 actually an mpeg frame header by parsing it and calculating its'
28650 length and checking that another frame header starts where we
28652 (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
28655 2008-01-28 Jeffrey Stedfast <fejj@novell.com>
28657 * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
28658 an MPEG sync header.
28659 (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
28660 IMediaSource's new GetSize() method to help calculate media
28661 duration as opposed to seeking to the end.
28663 2008-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
28665 * media.cpp, media.h: Open the media async.
28666 * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
28668 2008-01-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
28670 * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
28671 reached eof and couldn't advance.
28672 * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
28673 get while we're waiting for a seek to happen. Implement a better pause
28674 algorithm, the previous one was flawed and dead-locked once in a while.
28675 * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
28676 Create one frame reader for each stream.
28678 2008-01-27 Jeffrey Stedfast <fejj@novell.com>
28680 * media.cpp (MediaElement::UpdateProgress): Check (pos +
28681 buffering_size) > size, not < size. Duh.
28683 * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
28684 argument to use in place of media->GetSource().
28685 (Media::Open): Don't set this->source unless we successfully open
28688 2008-01-26 Jeffrey Stedfast <fejj@novell.com>
28690 * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
28691 set the state to Buffering so that calling Play() will actually
28692 start playing the media (if the file was local, then we'll be in
28693 the Opening state which means that calling Play() will only note
28694 that a Play action was requested, but won't actually play the
28696 (MediaElement::SetState): Don't check for downloaded_file == NULL,
28697 it might fail in the above case.
28699 2008-01-26 Jackson Harper <jackson@ximian.com>
28701 * xaml.cpp: Set the encoding when we are reading files also.
28703 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
28705 * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
28706 greater than the current wait_pos.
28708 * media.cpp (UpdateProgress): Use the buffering_start position
28709 rather than the current write position to calculate buffer_size.
28711 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
28713 * media.cpp (TryOpen): When download is complete and we
28714 successfully open the media, don't set the state to Paused - this
28715 breaks Halo3 if the video is cached.
28717 * media.cpp|h: Consolidated all of the bool state variables into a
28720 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28722 * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
28723 waiting for publicly available.
28724 * media.cpp: UpdateProgress: use the position the file is waiting for to
28725 calculate the buffer size (if it would exceed the default buffer size).
28727 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28729 * media.h: Add some descriptive comments.
28731 2008-01-25 Sebastien Pouliot <sebastien@ximian.com>
28733 * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
28734 instead of calling it since it can reduce some heavy cairo calls
28735 (cairo_in_*), if there's a clip, otherwise it won't affect
28738 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28740 * media.cpp: Initialize play_pending, and when buffering is
28741 finished, only play if autoplay or play_pending is true.
28743 2008-01-25 Jeffrey Stedfast <fejj@novell.com>
28745 * mplayer.cpp: Get rid of some unused variables and cleaned up
28748 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28750 * pipeline.cpp, media.cpp: More printfs removed.
28752 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28754 * src.mdp: Updated.
28756 * pipeline-ffmpeg.cpp: Commented out printf.
28758 * pipeline.h, pipeline.cpp: Removed some dead code. Made all
28759 interfaces inherit from IMediaObject, and put the media field
28760 there. Commented out printfs.
28762 * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
28763 simplify code a bit. Encapsulated target_pts handling into
28766 * media.h, media.cpp: Create one and only one MediaPlayer for the
28767 life-time of the MediaElement. If not AutoPlay is set, then pause
28770 2008-01-25 Rolf Bjarne Kvinge <RKvinge@novell.com>
28772 * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
28773 usage, but on construction, and finish it upon destruction. Fixes race
28774 between creating and destructing the thread.
28776 2008-01-24 Chris Toshok <toshok@ximian.com>
28778 * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
28779 (calc_perpendicular_intersection_points): new method.
28780 (Stroke::HitTestSegmentSegment): use
28781 calc_perpendicular_intersection_points to give us the end points
28782 of the outer line segments, and use those for hit testing.
28784 2008-01-24 Jeffrey Stedfast <fejj@novell.com>
28786 * media.cpp (UpdateProgress): When switching to Buffering mode,
28787 save the position where we're currently at in the file so that we
28788 can use that as a reference point when calculating progress. Also,
28789 pause the MPlayer so that audio won't continue to play while we're
28790 waiting for buffering to complete. Fixes bug #356051.
28792 2008-01-24 Sebastien Pouliot <sebastien@ximian.com>
28794 * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke
28795 (or fill) are present for the shape.
28797 2008-01-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
28799 * pipeline.cpp, pipeline.h: Create a more general worker thread,
28800 and use unions to save some space in WorkItem. In the ASFDemuxer,
28801 when seeking, we need to seek to the audio stream, since that's
28802 what we're using to sync against (if we have audio).
28804 * list.cpp, list.h: Added List::InsertBefore.
28806 2008-01-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
28808 * media.cpp: MediaElement::SetSource: only trigger the download
28809 after we've attached to the CompletedEvent.
28811 2008-01-23 Chris Toshok <toshok@ximian.com>
28813 * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
28814 re-enter HandleMouseEvent, which can happen when that stupid JS
28815 timeout dialog pops up.
28817 2008-01-23 Chris Toshok <toshok@ximian.com>
28819 * runtime.cpp (Surface::SetMouseCapture): this fails not only if
28820 there's an existing capture, but also if there's a pending
28821 capture (so if both a parent and child capture on the same event,
28822 the child gets it.) Fixes dragging things around in ink journal.
28824 2008-01-23 Chris Toshok <toshok@ximian.com>
28826 * stylus.cpp, stylus.h: initial hit testing stuff. right now the
28827 only tests that are implemented are endcap (ellipse) vs. point,
28828 and segment vs. segment (although this one isn't the full test, as
28829 we're using the stroke line, as opposed to the exterior lines
28830 created by the ellipse pen tracing that line).
28832 * rect.h: add PointInside (Point p).
28834 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28836 * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
28837 it's no longer part of the build.
28839 2008-01-23 Sebastien Pouliot <sebastien@ximian.com>
28841 * shape.cpp|h: Add support for different PenLineCap on Line (part
28842 of #345888). Fix Polyline when a single segment is used (removed
28843 TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
28845 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28847 * media.cpp (SetSource): Initialize the ProgressiveSource.
28849 * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
28850 parent class's implementation.
28852 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28854 * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
28856 2008-01-23 Jeffrey Stedfast <fejj@novell.com>
28858 * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
28859 where the caller is trying to read a block larger than our
28861 (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
28862 uint64_t (which is needed in the case of seeking backwards).
28864 2008-01-22 Larry Ewing <lewing@novell.com>
28866 * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
28867 and into Path.cpp as a transform not by modifying the data.
28869 * geometry.cpp, geometry.h: remove stretch logic.
28871 2008-01-22 Jeffrey Stedfast <fejj@novell.com>
28873 * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
28874 if within our pre-buffered bounds.
28875 (ProgressiveSource::Write): When restoring position state, use the
28876 proper offset (e.g. the offset of the end of our pre-buffered
28879 2008-01-22 Chris Toshok <toshok@ximian.com>
28881 * collection.cpp (UIElementZIndexComparer): the magnitude of the
28882 return value doesn't matter, only the sign.
28884 2008-01-22 Chris Toshok <toshok@ximian.com>
28886 * media.cpp (Image::InsideObject): if we have no surface (the
28887 image hasn't been loaded), we aren't HitTestVisible.
28889 * media.h (class Image): add InsideObject override.
28891 2008-01-22 Chris Toshok <toshok@ximian.com>
28893 * panel.cpp (Panel::OnCollectionChanged): remove the fix for
28894 #353954 as its redundant after the previous commit.
28896 2008-01-22 Chris Toshok <toshok@ximian.com>
28898 * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
28901 2008-01-22 Jeffrey Stedfast <fejj@novell.com>
28903 * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
28904 call Initialize() on the file source.
28906 * pipeline.cpp (IMediaSource): Read() now returns the number of
28907 bytes read rather than true/false and does nto guarantee that all
28908 of the data was read. Added a ReadAll() method which does what the
28909 old Read() method did.
28910 (FileSource): Rewritten to do our own buffering which allows for
28911 nice optimizations for Peek() and Seek().
28912 (ProgressiveSource): Also rewritten.
28914 * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
28916 * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
28917 just made them extern in the ehader, this way we don't duplicate
28918 those values in each source file that includes this header.
28920 2008-01-22 Sebastien Pouliot <sebastien@ximian.com>
28922 * shape.cpp|h: First part of DoDraw refactoring. Pass all
28923 regression tests from harness (moon versus moon) but it's possible
28924 that some degenerated cases (without test cases) regress.
28926 2008-01-22 Larry Ewing <lewing@novell.com>
28928 * clock.cpp: initalize the smoothing to max framerate, the first
28929 frame is quite likely the slowest frame we'll ever draw. Bump
28930 error delta back up to 1/50th.
28932 2008-01-22 Chris Toshok <toshok@ximian.com>
28934 * media.cpp (MediaElement::Render): a little cairo cleanup, and
28935 remove the USE_OPT_REGION_CLIP block.
28937 2008-01-22 Andrew Jorgensen <ajorgensen@novell.com>
28939 * pipeline.cpp: include unistd.h, fixes a build error introduced in
28940 r93311 when building without-ffmpeg
28942 2008-01-22 Larry Ewing <lewing@novell.com>
28944 * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
28947 2008-01-22 Larry Ewing <lewing@novell.com>
28949 * clock.cpp: Tweak clock timing and smoothing. Increase timer
28950 priority so that ticks get deliver when we want them this doesn't
28951 change the smoothing calculation but it can raise the actual fps
28952 by assuring all our clocks are delivered. Change smoothing alpha
28953 from 0.3 to 0.03 to improve noise immunity. Don't reset the timer
28954 unless our new calculated timeout differs from our old by at least
28955 1/50 of a second. Resetting the clock on every tick had the
28956 effect adding the drawing time to the tick time for every tick
28957 since the timeout starts over at zero.
28959 2008-01-21 Jeffrey Stedfast <fejj@novell.com>
28961 * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
28962 unspecified, encode the bitrate back into the header so that if we
28963 are using the NullMp3Decoder, it will know how to handle
28964 it. Probably also needed for any actual Mp3 decoders as well since
28965 it won't reliably be able to keep track of variable-bitrate
28966 streams otherwise since it wouldn't know if/when we seek.
28967 (NullMp3Decoder::DecodeFrame): Implemented.
28969 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28971 * pipeline.cpp: Remove printf.
28973 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28975 * src.mdp: Remove mplayer2.cpp from here too.
28977 2008-01-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
28979 * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
28980 mplayer2.cpp to mplayer.cpp.
28982 2008-01-21 Jeffrey Stedfast <fejj@novell.com>
28984 * downloader.cpp (ll_downloader_get_response_file): Fixed to use
28985 mkstemp() rather than tmpnam_r() and also simplified.
28987 * pipeline.cpp: Fixed various things about the progressive stream.
28989 2008-01-19 Jeffrey Stedfast <fejj@novell.com>
28991 * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
28992 don't memmove() data unless we don't have enough to play a single
28993 frame. Instead, what we'll do is keep progressing audio->outbuf as
28996 2008-01-19 Chris Toshok <toshok@ximian.com>
28998 * uielement.cpp (UIElement::OnPropertyChanged): remove the
28999 handling of TriggersProperty and ResourcesProperty's closure.
29001 * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
29004 * transform.cpp (TransformGroup::OnPropertyChanged): remove
29005 handling of ChildrenProperty's closure.
29007 * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
29008 the handling of Inlines->closure from TextBlock.
29010 * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
29011 methods (InkPresenter and Stroke).
29013 * panel.cpp (Panel::OnPropertyChanged): remove handling of the
29014 ChildProperty's closure here.
29016 * media.cpp, media.h: remove the unnecessary
29017 MediaBase::OnPropertyChanged.
29019 * geometry.cpp, geometry.h: remove a few OnPropertyChanged
29020 methods (GeometryGroup, PathGeometry, and PathSegment.)
29022 * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
29024 * brush.cpp, brush.h: remove the unnecessary
29025 Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
29027 * animation.cpp, animation.h: remove all the
29028 *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
29029 they did was deal with collection closures.
29031 * dependencyobject.cpp (DependencyObject::SetValue): factor out
29032 the "collection->closure" setting code from all the
29033 OnPropertyChanged methods sprinkled around and put it here. Also,
29034 set collection->closure to NULL on the old value (something the
29035 old code didn't do).
29037 2008-01-19 Chris Toshok <toshok@ximian.com>
29039 * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
29040 NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
29043 * animation.h: clean this file up by removing all those disgusting
29044 macros. for the DECL macros, just expand them here, as having the
29045 methods listed in the class declaration is a good thing.
29047 * collection.cpp (collection_new): remove the switch statement
29048 from here and use Type::CreateInstance instead. this largely
29049 removes the need to be including extra headers (like animation.h).
29051 2008-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
29053 * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
29054 MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
29055 * src.mdp: Updated.
29057 2008-01-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
29059 * media.h, media.cpp: MediaElement: make this a state machine to follow the
29060 behaviour specified in MSDN. Implement buffering of media files.
29061 MediaSource (and derived): take a IMediaSource instead of a filename.
29062 * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
29063 Remove all MOON_MEDIA ifdefs, too many changes to support both versions
29064 now. Make seeking async.
29065 * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
29066 worker thread, seeking can now be done there too. Implement
29068 * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
29069 the file extension. MediaSource (and derived): take a IMediaSource
29070 instead of a filename.
29071 * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
29074 2008-01-18 Larry Ewing <lewing@novell.com>
29076 * uielement.cpp: compute total_opacity for invalidation logic but
29077 use local_opacity for drawing. This fixes monotones grid.xaml and
29078 some hit test regressions.
29080 2008-01-18 Jackson Harper <jackson@ximian.com>
29082 * xaml.cpp: KeyFrameCollections can be specified in the xaml if
29083 they are in a property element.
29084 - When searching for collections, use is subclass instead of
29085 making them be the same type, so derivied collections can be used.
29087 2008-01-17 Chris Toshok <toshok@ximian.com>
29089 * pipeline.h (class IMediaDemuxer): initializer streams and
29090 stream_count so we don't crash on ltbennett.com.
29092 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
29094 * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
29095 MPEG header, set MediaFrame->event to EOF. Same if we can't read
29097 (Media::GetNextFrame): Don't try to decode the frame if it is an
29099 (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
29102 * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
29103 (AdvanceFrame): Handle EOF frame events.
29104 (audio_loop): Handle EOF frame events.
29106 2008-01-17 Chris Toshok <toshok@ximian.com>
29108 * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
29109 invalidate the old bounds of the stroke for ItemRemoved as well as
29112 2008-01-17 Chris Toshok <toshok@ximian.com>
29114 * rect.h (Rect::Transform): new method, allows for transforming a
29115 rectangle by a cairo_matrix_t, used with transforming the stroke
29116 bounds back to screen space using the InkPresenter's
29119 * stylus.cpp, stylus.h: deal with collection changed notifications
29120 on Stroke::StylusPointsProperty and on
29121 InkPresenter::StrokesProperty, and correctly invalidate a stroke's
29122 bounds. The bounds of a stroke needs to be looked at - right now
29123 it's in the coordinate space of the InkPresenter, and so it needs
29124 to be transformed back to screen space before invalidating. Need
29125 to check if MS uses screen space for a stroke's bounds (seems
29126 likely they do, but this was easier to code.)
29128 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
29130 * mplayer2.cpp: Updated for MediaFrame changes.
29132 * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
29134 * pipeline.cpp: Instead of having a compressed_data and
29135 uncompressed_data field, simply have a 'buffer' field that gets
29136 reused by both the demuxer and the decoder. The decoder will set
29137 the buffer to the compressed data and the decoder will, once
29138 finished decoding, free the buffer and then update it to point to
29139 the decoded data. This reduces memory overhead.
29141 2008-01-17 Chris Toshok <toshok@ximian.com>
29143 * uielement.cpp (UIElement::InsideClip): use
29144 uielement_transform_point instead of duplicating it.
29146 * shape.cpp (Shape::InsideObject): use uielement_transform_point
29147 instead of duplicating it.
29149 * text.cpp (TextBlock::InsideObject): use
29150 uielement_transform_point instead of duplicating it.
29152 2008-01-17 Larry Ewing <lewing@novell.com>
29154 * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
29155 unstroked rectangles (see test-rectangle-aliasing.xaml). Suggest
29156 more rectangle testing after this.
29158 2008-01-17 Jackson Harper <jackson@ximian.com>
29160 * xaml.cpp: After setting a property stop walking up the element
29163 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
29165 * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
29167 2008-01-17 Jeffrey Stedfast <fejj@novell.com>
29169 * mplayer2.cpp (audio_decode): Removed as it is no longer really
29171 (audio_loop): We can't assume that an entire decoded audio packet
29172 will fit into the audio output buffer in a single shot, break it
29175 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
29177 * mplayer2.cpp: Max out video frame rate at 60fps.
29179 2008-01-17 Fernando Herrera <fherrera@novell.com>
29181 * panel.cpp: Reorder based on ZIndex when a new item is added.
29184 2008-01-17 Larry Ewing <lewing@novell.com>
29186 * runtime.cpp (Surface::InitializeDrawingArea): disable extended
29187 input devices until the remaining issues can be resolved.
29189 2008-01-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
29191 * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
29193 2008-01-16 Larry Ewing <lewing@novell.com>
29195 * uielement.cpp, uielement.h:
29196 * panel.cpp, panel.h:
29197 * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
29198 Combine the opacity visibility check into the total render
29199 visibility. Make sure we compute/invalidate in all the same
29202 * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
29204 * uielement.cpp (UIElement::DoRender): make sure we don't reset
29205 the coordinate system when setting up the clip calls in the
29206 opacity and opacity mask cases. Go back to using the brush
29207 directly when rendering masks. Should speed things up a little
29208 and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
29210 2008-01-16 Chris Toshok <toshok@ximian.com>
29212 * stylus.h, stylus.cpp: a few changes. Move the
29213 StylusPointCollection and StrokeCollection classes here from
29214 collection.h/collection.cpp. I didn't like the addition of
29215 stylus.cpp logic in two places. Convert Stroke::GetBounds use use
29216 the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
29217 methods, and build up the bounds for the StrokeCollection by
29218 unioning all the Stroke bounds (these should be cached, but aren't
29219 yet.) StrokeCollection::HitTest has been implemented, just
29220 looping over the strokes. Stroke::HitTest is missing its guts at
29221 the moment, since hit testing is going to be a little bit of a
29224 * collection.h, collection.cpp: remove StylusPointCollection and
29227 2008-01-16 Larry Ewing <lewing@novell.com>
29229 * uielement.cpp, uielement.h: Rework the way we handle opacity to
29230 operate like the reference platform by removing the concept of
29231 TotalOpacity and instead using push/pop group and paint_with
29232 alpha. See test-sibling-opacity.xaml for an example. Handle
29233 clipping in DoRender rather than in every subclass because we want
29234 the clip path active before calling push/pop so that the temporary
29235 surface is bounded.
29236 * brush.cpp, panel.cpp: remove GetTotalOpacity references.
29237 * media.cpp, media.h: cleanup the complicated render logic now
29238 that things are handled in uielement.
29239 * shape.cpp, text.cpp: remove RenderClipPath calls.
29241 * rect.cpp, rect.h: add draw methods.
29243 2008-01-16 Jeffrey Stedfast <fejj@novell.com>
29245 * pipeline.cpp: Implemented mpeg seeking support for
29246 Mp3FrameReader and, thusly, Mp3Demuxer.
29247 (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
29249 2008-01-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
29251 * mplayer2.cpp: Remove a superfluous variable from Audio.
29253 2008-01-16 Rolf Bjarne Kvinge <RKvinge@novell.com>
29255 * mplayer2.cpp: Remove superfluous variables from Video.
29257 2008-01-16 Sebastien Pouliot <sebastien@ximian.com>
29259 * moon-path.c: Fix typo (but was same value).
29261 2008-01-15 Jeffrey Stedfast <fejj@novell.com>
29263 * pipeline.cpp: Implemented mp3 demuxer.
29265 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
29267 * mplayer2.cpp: Don't crash if Seek is called before Open.
29269 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
29271 * mplayer2.cpp: Remove dead code and variables, and only request
29272 audio/video frames if we have audio/video.
29274 2008-01-15 Jeffrey Stedfast <fejj@novell.com>
29276 * mplayer2.cpp: Get rid of extra member variables in Packet.
29278 2008-01-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
29280 * mplayer2.cpp: Implement audio decoding on the main thread as well.
29282 2008-01-14 Jeffrey Stedfast <fejj@novell.com>
29284 * pipeline.cpp: Partially implemented an mp3 demuxer.
29286 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
29288 * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
29289 work again with the new pipeline.
29291 2008-01-14 Sebastien Pouliot <sebastien@ximian.com>
29293 * shape.cpp|h: It looks like we stopped needing consider_fill a
29296 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
29298 * mplayer.h: We don't need io_tread anymore, so remove it.
29299 * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
29300 for doing the decoding on the main thread with easy (in-code) switch.
29301 Comment out printfs, and remove dead/old/commented-out code.
29302 * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
29303 decoding on the main thread with easy (in-code) switch.
29304 * runtime.cpp: Don't print entire object tracking output if nothing leaked.
29306 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
29308 * xaml.cpp: Unref a matrix object when we are done with it.
29309 * mplayer2.cpp: Remove printf.
29311 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
29313 * mplayer2.cpp: Remove printfs.
29314 * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
29316 * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
29318 2008-01-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
29320 * pipeline.cpp: Fix crash with several web-sites (when seeking before
29323 2008-01-11 Chris Toshok <toshok@ximian.com>
29325 * clock.h (class Clock): add an instance
29326 field (calculated_natural_duration).
29328 * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
29329 current time here. this was inflating animation begin time's in
29330 some cases to be either very close to the parent's calculated
29331 duration (or even after it).
29332 (ClockGroup::ComputeBeginTime): don't chain up to
29333 Clock::ComputeBeginTime. clock groups in our system need to
29334 include their parent time in their begin time. There are only two
29335 levels of clockgroups - storyboards, and the clockgroup we have
29336 associated with a given surface (Which will be the parent of all
29337 the storyboards running on that surface.)
29338 (output_clock): print out the BeginTime of the clock.
29339 (TimeManager::AddChild): I don't really like this, but we need to
29340 force the calculation of the natural duration of the clock when
29341 it's added to the hierarchy.
29342 (ClockGroup::AddChild): same here.
29343 (Clock::Clock): don't calculate the natural duration of the clock
29344 here - when we instantiated a ClockGroup it was calculating the
29345 duration before the child clocks were added.
29347 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29349 * pipeline.cpp: Seek on the frame reader, not on the source.
29350 * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
29351 HasAudio/Video (). Fix seeking to actually work.
29353 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29355 * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
29356 mplayer.h where it belongs.
29357 * pipeline.cpp, pipeline.h: Implement seeking.
29358 * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
29359 directly, since ffmpeg uses one single memory location for all decoded
29360 frames, causing us to always show the last decoded frame.
29362 2008-01-11 Sebastien Pouliot <sebastien@ximian.com>
29364 * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
29365 See bug #345892 for the required cairo patch.
29367 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29369 * media.cpp: Initialize Media too upon initialization.
29370 * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
29371 mplayer2.cpp, mplayer.cpp: Implement registration of components, making
29372 it possible to completely remove ffmpeg.
29374 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29376 * pipeline.cpp: Remove stray character.
29378 2008-01-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
29380 * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
29381 pipeline-ffmpeg.h: Code-cleanup.
29383 2008-01-10 Larry Ewing <lewing@novell.com>
29385 * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
29386 before setting the extension events (lame api) and disable the
29389 2008-01-10 Chris Toshok <toshok@ximian.com>
29391 * runtime.cpp (Surface::InitializeDrawingArea): activate all
29392 devices that have a cursor associated with them.
29394 2008-10-10 Andrew Jorgensen <ajorgensen@novell.com>
29396 * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
29398 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
29400 * mplayer.cpp: Surround with ifdef to conditionally include the new
29401 MediaPlayer or not.
29402 * Makefile.am: Added pipeline* and mplayer2.cpp.
29403 * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
29405 * pipeline.cpp, pipeline.h: Added.
29406 * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
29408 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
29410 * panel.cpp: Delete leaked region.
29412 2008-01-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
29416 2008-01-09 Chris Toshok <toshok@ximian.com>
29418 * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
29421 2008-01-09 Chris Toshok <toshok@ximian.com>
29423 * collection.h, collection.cpp: add C wrappers for
29424 StrokeCollection::GetBounds and ::HitTest.
29426 * stylus.h, stylus.cpp: same deal for Stroke::
29428 2008-01-09 Chris Toshok <toshok@ximian.com>
29430 * collection.h, collection.cpp: add empty implementations of
29431 StrokeCollection::GetBounds and StrokeCollection::HitTest.
29433 * stylus.h, stylus.cpp: add empty implementations of
29434 Stroke::GetBounds and Stroke::HitTest.
29436 2008-01-09 Chris Toshok <toshok@ximian.com>
29438 * uielement.h, uielement.cpp: change all the Emit* methods that
29439 deal with mouse events to take a GdkEvent instead of state/x/y,
29440 and also change their calldata to a heap allocated MouseEventArgs,
29441 which we unref after the emit. This is because the pointer itself
29442 is wrapped by the managed MouseEventArgs, and will be unref'ed in
29443 ~MouseEventArgs at some later time.
29445 * runtime.h, runtime.cpp: change all the mouse events to pass
29446 around the actual GdkEvent instead of the state/x/y. This is due
29447 to the fact that our MouseEventArgs class now wraps the GdkEvent,
29448 so we can get at all the stylus/extension event stuff.
29450 * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
29451 longer required. We correctly create a StylusInfo instance from
29452 the MouseEventArgs.
29454 * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
29455 (libmooninclude_headers): add eventargs.h
29457 * libmoon.h: add eventargs.h.
29459 * eventargs.h, eventargs.cpp: new files, splitting out the
29460 KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
29461 out MouseEventArgs, making it a refcounted object with enough
29462 smarts to handle both the managed case and plugin case. Include
29463 all the stylus related code as well, so this *should* make all the
29464 stylus requiring demos work.
29466 2008-01-09 Jeffrey Stedfast <fejj@novell.com>
29468 * geometry.cpp (path_get_bounds): My fix the other day wasn't
29469 quite ideal. Instead of using a 0.1 line thickness when the
29470 shape's StrokeThickness is 0, continue using that 0 thickness but
29471 use cairo_fill_extents() instead. Also, when shape is null, ise a
29472 0.0 thickness & cairo_fill_extents() as well.
29474 * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
29475 that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
29477 * runtime.cpp (EmitEventOnList): Changed to take double x,y
29478 coordinate arguments rather than int.
29479 (HandleMouseEvent): Same.
29481 2008-01-09 Jeffrey Stedfast <fejj@novell.com>
29483 * list.cpp (List::~List): Added a dtor that deletes all nodes
29484 currently in the list. This is doable now that List::Nodes are
29485 classes where the node dtors can be overloaded.
29487 2008-01-09 Jackson Harper <jackson@ximian.com>
29489 * xaml.cpp: If a property is a collection, don't assume that the
29490 collection is already initialized (they used to always be), and
29491 initialize the collection if needed. This fixes BNC 350893.
29493 2008-01-09 Stephane Delcroix <sdelcroix@novell.com>
29495 * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
29496 on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
29498 2008-01-08 Chris Toshok <toshok@ximian.com>
29500 * animation.cpp (Storyboard::Begin): simple change to fix a nasty
29501 bug. we need to add the teardown handler before the completed
29502 handler. otherwise cases where people were using a storyboard as
29503 a timer would break - the completed handler would fire, the JS
29504 would restart the storyboard, then the teardown handler would free
29505 the new clock hierarchy. Fixes the page animation in pageturn,
29506 and gets the bubbles moving again in the SilverlightCLRBalls demo.
29508 2008-01-07 Jeffrey Stedfast <fejj@novell.com>
29510 * geometry.cpp (path_get_bounds): Cairo seems to break if the line
29511 thickness is 0.0, so if the shape's thickness is set to 0.0, use
29512 0.1 like we do if shape is null. Fixes bug #351575.
29514 2008-01-07 Sebastien Pouliot <sebastien@ximian.com>
29516 * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
29517 that ignore those properties, can avoid setting them on the cairo
29520 2008-01-04 Chris Toshok <toshok@ximian.com>
29522 * runtime.cpp: mostly switch all emit_* calls to take doubles, and
29523 pass doubles around for button x/y.
29524 (Surface::motion_notify_callback): if we're gtk > 2.12, use
29525 gdk_event_request_motions (falling back to gdk_window_get_pointer
29526 if not). also, we can use the mouse_event_x/y from the event,
29527 even when it's a hint.
29529 * runtime.h: switch back to using doubles for everything mouse
29530 event related. Change MoonlightEventEmitFunc to take doubles.
29532 2008-01-04 Jeffrey Stedfast <fejj@novell.com>
29534 * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
29535 since the events that use them want them as ints anyway.
29536 (button_release_callback): Cast the button->x/y doubles to int.
29537 (button_press_callback): Same.
29538 (motion_notify_callback): Cast event->x/y to int.
29539 (crossing_notify_callback): Same.
29541 * dependencyobject.cpp: EventObjects now use a List class for
29542 event_lists rather than GSList which is far more costly for
29544 (Emit): Reduce the number of linked-list iterations from 5 to 2.
29546 2008-01-04 Chris Toshok <toshok@ximian.com>
29548 * runtime.h, runtime.cpp: completely overhaul the way we handle
29549 mouse events. Instead of doing both hit testing and event
29550 dispatch in one recursive tree traversal, we build up a list of
29551 all elements that will bubble the event, and then use that list
29552 along with the previous one to generate Enter/Leave events for the
29553 elements that require it. Also fix the way capture is done (it's
29554 not handled until the end) and fix the Enter event dispatch when
29555 you release mouse capture.
29557 * uielement.h, uielement.cpp: rename the mouse events to match the
29558 names used in C# and JS, as it's been singularly annoying to
29559 remember that ButtonPressEvent -> MouseLeftButtonDown, etc. Also
29560 rename all the Handle* event methods to Emit*, as that's all they
29561 do. Make them nonvirtual, as the traversal and emission of the
29562 events now happens in runtime.cpp. Add a new virtual
29563 method (HitTest), that is overridden by the container elements,
29564 which appends elements that are going to bubble the event to the
29567 * panel.h, panel.cpp: remove all the Handle* methods, implement
29570 * control.h, control.cpp: remove all the Handle* methods,
29573 2008-01-04 Jeffrey Stedfast <fejj@novell.com>
29575 * media.cpp (UpdateProgress): Don't SetValue() unless the delta
29576 was large enough - otherwise we could get into a situation where
29577 we never emit a progress changed event in a case where the data
29578 trickles in at < 0.05%.
29580 2008-01-04 Chris Toshok <toshok@ximian.com>
29582 * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
29583 up the clock hierarchy for the target property like we do with the
29586 2008-01-04 Chris Toshok <toshok@ximian.com>
29588 * media.h: add Image::DownloaderFailed.
29590 * media.cpp (Image::UpdateProgress): make sure to qualify the
29591 DownloadProgressProperty we lookup on the Downloader, since
29592 without the Downloader:: it'll try to get
29593 Image::DownloadProgressProperty, which will always return 0.0.
29594 (Image::SetSource): use the static qualifier for
29595 events (Downloader:: instead of downloader->).
29596 (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
29598 * brush.cpp (ImageBrush::image_progress_changed): make sure to set
29599 our ImageBrush::DownloadProgressProperty before emitting the
29601 (brush_init): lookup the ImageBrush::ImageFailedEvent.
29603 2008-01-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
29605 * runtime.cpp: Free background_color upon surface
29606 destruction. Fixes a minor leak.
29608 * clock.cpp|h: Free the tick_call_mutex upon destruction.
29610 2008-01-03 Jeffrey Stedfast <fejj@novell.com>
29612 Fix for bug #350962
29614 * media.cpp (MediaBase::OnPropertyChanged): Don't emit
29615 DownloaderProgressChanged events anymore, leave that up to Image
29616 and MediaElement classes so that we don't emit events when an
29617 outside source changes the value.
29618 (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
29619 event if the proper download delta has occured.
29620 (Image::UpdateProgress): Same.
29622 2008-01-02 Rolf Bjarne Kvinge <RKvinge@novell.com>
29624 * dependencyobject.h: Remove warning.
29626 2007-12-31 Jeffrey Stedfast <fejj@novell.com>
29628 * runtime.h (CreateDownloader): Simplified.
29630 2007-12-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
29632 * collection.cpp: Upon destruction on VisualCollection, remove the visual
29633 parent of all items.
29634 * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
29636 * dirty.cpp: Don't take a ref in DirtyNode.
29638 2007-12-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
29640 * media.cpp: Add const modifier
29642 2007-12-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
29644 * downloader.cpp: Null-initialize a field.
29645 * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
29647 2007-12-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
29649 * pipeline.h: Added, the start of the new media pipeline.
29651 2007-12-20 Sebastien Pouliot <sebastien@ximian.com>
29653 * collection.cpp|h: Add missing method AddStylusPoints for
29654 StylusPointCollection
29656 2007-12-20 Sebastien Pouliot <sebastien@ximian.com>
29658 * geometry.h: Remove hack for PathGeometry::FiguresProperty
29659 * xaml.cpp: If a collection is null by default then we must call
29660 parent->SetValue(dp, collection) or the collection, and it's
29661 contents, won't be available. Fix (correctly) Chess.
29663 2007-12-19 Sebastien Pouliot <sebastien@ximian.com>
29665 * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
29666 there's no default Figure collection. Fix Chess crasher.
29667 * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
29668 foir doubles, and as an "empty" (but not NULL) Value for
29671 2007-12-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
29673 * media.cpp, media.h: Implement support for markers as a separate stream
29674 (the demuxer will call a callback when it encounters any streamed
29677 2007-12-19 Sebastien Pouliot <sebastien@ximian.com>
29679 * xaml.cpp: Add create_item_func for PathFigureCollection. This is
29680 now needed since it defaults to null and not an empty collection.
29682 2007-12-19 Stephane Delcroix <sdelcroix@novell.com>
29684 * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
29686 2007-12-18 Sebastien Pouliot <sebastien@ximian.com>
29688 * color.cpp: Handle empty string correctly in color_from_str. Unit
29689 tests shows this return 0 (and not transparent).
29691 2007-12-18 Stephane Delcroix <sdelcroix@novell.com>
29693 * xaml.cpp: fix for bnc 348581.
29695 2007-12-18 Sebastien Pouliot <sebastien@ximian.com>
29697 * brush.cpp: Fix default color values for SolidColorBrush::Color and
29698 GradientStop::Color properties (see js unit tests).
29699 * geometry.cpp|h: Remove default collection from PathGeometry. Fix
29700 testPathGeometry unit test.
29702 2007-12-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
29704 * media.cpp: ReadASFMarkers: Read markers as well as script commands.
29705 Subtract the preroll value from the pts before adding the marker. Unref
29706 the created collection and markers when finished with them.
29707 AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
29708 frame (might be necessary if the last frame has a marker).
29710 2007-12-17 Jb Evain <jbevain@novell.com>
29712 * xaml.cpp: fix testMatrixWithZeroItem test case.
29714 2007-12-17 Jb Evain <jbevain@novell.com>
29716 * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
29717 value type, has SL exposes it as a DependencyObject.
29719 * transform.cpp|h: define and implement the
29720 Matrix DependencyObject type.
29722 * xaml.cpp: create a Matrix DO on a Matrix xaml element.
29723 Also create such an object with the <MatrixTransform Matrix='...'>
29726 2007-12-17 Sebastien Pouliot <sebastien@ximian.com>
29728 * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
29729 is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
29731 2007-12-14 Jeffrey Stedfast <fejj@novell.com>
29733 * runtime.cpp (fps_report_default): Default printf FPS report
29735 (Surface::render_cb): Use instance-local variables for keeping
29736 track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
29739 * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
29740 (class Surface): New method to set the FPS report callback for a
29743 2007-12-14 Chris Toshok <toshok@ximian.com>
29745 * type.cpp.in, type.cpp (types_init_register_events): need to
29746 register DownloadProgressChanged and ImageFailed events on
29749 * brush.h, brush.cpp: same, and hook up the events from
29750 ImageBrush's embedded image so that we can re-emit the events.
29752 2007-12-14 Jeffrey Stedfast <fejj@novell.com>
29754 * downloader.cpp (Downloader::Abort): Don't abort if we've already
29755 been aborted or been notified that we've failed (needed protection
29756 for the Plugin downloader).
29757 (Downloader::Send): Set aborted = false.
29758 (Downloader::NotifyFailed): Don't do anything if we've already
29759 been notified of failure for this download request.
29761 * downloader.h (class Downloader): Keep track of aborted state as
29764 2007-12-14 Stephane Delcroix <sdelcroix@novell.com>
29766 * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
29767 only one (Width XOR Height) is provided.
29769 2007-12-14 Sebastien Pouliot <sebastien@ximian.com>
29771 * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
29772 been built before calling cairo_stroke_extents. This fix sample
29773 http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
29775 2007-12-13 Sebastien Pouliot <sebastien@ximian.com>
29777 * shape.cpp|h: Shortcut path bounds calculation when both Width
29778 and Height are specified. Add same clipping rules to Line,
29779 Polyline and Polygon classes.
29781 2007-12-13 Sebastien Pouliot <sebastien@ximian.com>
29783 * geometry.cpp: Resume using cairo_stroke_extents in some cases
29784 because we need very precise bounds for Fill to work properly.
29785 This fix Sprawl's cowboy hat ribbon :-)
29787 2007-12-12 Stephane Delcroix <sdelcroix@novll.com>
29789 * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
29791 2007-12-11 Jeffrey Stedfast <fejj@novell.com>
29793 * downloader.cpp|h: Made the ::Write() method take the same
29794 int-type args as the NPP_Write() function (which means int32 for
29795 both offset and nbytes).
29797 2007-12-11 Sebastien Pouliot <sebastien@ximian.com>
29799 * stylus.cpp: Fix JS unit tests for Stroke properties by having
29800 a default DrawingAttributes inside the Stroke.
29802 2007-12-10 Chris Toshok <toshok@ximian.com>
29804 * dependencyobject.h, dependencyobject.cpp: more event changes.
29805 events keep a integer "token" per event, that starts at 0, that is
29806 returned from the plugin's addEventListener method, and can be can
29807 be passed to the plugin's removeEventListener method.
29809 2007-12-10 Sebastien Pouliot <sebastien@ximian.com>
29811 * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
29812 property of the Shape. Fix bug #346018
29814 2007-12-10 Jeffrey Stedfast <fejj@novell.com>
29816 * runtime.cpp (InitializeDrawingArea): Removed the call to
29817 gtk_widget_set_size_request() - we now call it elsewhere (since
29818 going fullscreen requiers us to call set_size_request() /before/
29819 calling gtk_window_fullscreen(). When going to fullscreen mode,
29820 this was causing the FullScreenMessage item to appear in the
29821 upper-left corner rather than centered like it should have been.
29822 (Surface): Make the call to gtk_widget_set_size_request() here now
29823 that it no longer is called inside InitializeDrawingArea().
29825 2007-12-07 Sebastien Pouliot <sebastien@ximian.com>
29827 * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
29828 * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
29829 bounds calculation on paths when Height *and* Width are present.
29831 2007-12-07 Sebastien Pouliot <sebastien@ximian.com>
29833 * shape.cpp: In Shape::ComputeBounds don't compute half thickness
29834 unless the value is needed.
29836 2007-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
29838 * xaml.cpp: Plug more leaks.
29840 2007-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
29842 * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
29843 detected by the javascript tests.
29845 2007-12-06 Jeffrey Stedfast <fejj@novell.com>
29847 * media.cpp (media_element_get_attributes): Added.
29848 (media_element_set_attributes): Added.
29849 (MediaElement): Set an empty list of attributes as per the spec.
29851 2007-12-06 Stephane Delcroix <sdelcroix@novell.com>
29854 * brush.cpp: implement RelativeTransform for image brushes and
29855 LinearGradientBrush. RadialGradientBrush still missing.
29857 2007-12-06 Chris Toshok <toshok@ximian.com>
29859 * dependencyobject.h, dependencyobject.cpp: make
29860 EventObject::AddHandler return the id (when using the event_name
29863 2007-12-06 Chris Toshok <toshok@ximian.com>
29865 * xaml.cpp (xaml_init): register the right constructors for
29866 PathSegmentCollection, GeometryCollection, and
29867 TransformCollection.
29869 2007-12-05 Chris Toshok <toshok@ximian.com>
29871 * animation.cpp, animation.h: a couple of fixes. Move away from
29872 watching the clock state in AnimationStorage and resetting the
29873 property value there. instead, just override Clock::Stop in
29874 AnimationClock and call ResetPropertyValue on the storage.
29876 Also, when a storyboard's clock group is stopped, free it and
29877 remove it from the parent clock's list of children. This should
29878 keep us from growing the number of clocks over time for
29879 storyboards which don't have Begin() called again (the only
29880 circumstance under which we destroy the clock).
29882 * clock.cpp, clock.h: handle the case where a clock can be started
29883 and then stopped before the next clock tick. This happens when
29884 you move the mouse very quickly over the thumbnails in pageturn.
29886 2007-12-05 Sebastien Pouliot <sebastien@ximian.com>
29888 * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
29889 (no path provided). Fix Build/ComputeBounds when no center point
29892 2007-12-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
29894 * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
29895 dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
29896 and make it a real property with accessors.
29898 2007-12-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
29900 * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
29901 animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
29902 logical_parent/SetLogicalParent/GetLogicalParent.
29904 2007-12-04 Larry Ewing <lewing@novell.com>
29906 * media.cpp (Image::Render): fix the conditions for the opacity
29909 2007-12-03 Larry Ewing <lewing@novell.com>
29911 * src/media.cpp (Image::Render): use paint_with_alpha if opacity
29912 is changing, use the old buffered alpha if it is not.
29914 2007-12-04 Jb Evain <jbevain@novell.com>
29916 * stylus.cpp|h: add stylus_info_get_current function.
29917 Right now, it's an hack which always return a StylusInfo
29918 of type Mouse, not inverted.
29920 2007-12-03 Chris Toshok <toshok@ximian.com>
29922 * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
29923 it now clamps to [0,duration_timespan]. This fixes the Simon
29924 "button flying off the screen" bug.
29926 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29928 * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
29929 iterating thru the list 6 times :)
29930 (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
29931 child_clocks list here too, or we end up corrupting memory.
29933 2007-12-03 Larry Ewing <lewing@novell.com>
29935 * media.cpp (Image::Render): wrap the region clipping in a #define
29938 2007-12-03 Larry Ewing <lewing@novell.com>
29940 * media.cpp (Image::Render): remove accumulated drawing cruft.
29942 2007-12-03 Chris Toshok <toshok@ximian.com>
29944 * animation.cpp: put back in the calls to ComputeBeginTime that I
29945 accidentally committed a few days ago (and lewing reverted to fix
29946 the build). they're needed with the new clock changes.
29948 2007-12-03 Chris Toshok <toshok@ximian.com>
29950 * clock.cpp, clock.h: rework the clock code a bunch. There are a
29951 couple of large changes.
29953 Get rid of the stupid new_ and current_ fields. Just update the
29954 field immediately. This cuts down on logic in if checks, and also
29955 makes subclocks update much faster in relation to their parent
29956 clock (we used to have to wait 1 tick per level in the tree for
29957 state to propagate).
29959 Abstract out all the QueueEvent calls into setters in clock.h.
29961 Break up Clock::Tick some, so more of the code is reusable from
29962 ClockGroup::Tick without having to call Clock::Tick and then work
29965 2007-12-03 Sebastien Pouliot <sebastien@ximian.com>
29967 * brush.cpp: Fix breakage introduced in r90549 (the matrix is
29968 already set on the pattern).
29970 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29972 * dependencyobject.cpp (RemoveHandler): Simplified a little.
29974 * animation.cpp (Stop): Remove the CompletedEvent root_clock
29975 handler. Fixes Simon's GAME OVER! textblock storyboard.
29977 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29979 * runtime.cpp: Added clipping/bounding-box override values.
29981 * uielement.cpp (DoRender): Changed optional bounding-box/clipping
29982 debugging drawing based on runtime settable bitflags.
29984 2007-12-03 Larry Ewing <lewing@novell.com>
29986 * uielement.cpp: Clean up the debug rendering code for bounding
29987 boxes and clip regions.
29989 2007-12-03 Jeffrey Stedfast <fejj@novell.com>
29991 Fixes a bug pointed out by Larry when rendering lines beginning
29992 with a 'J', where the tail escapes the bounding box.
29994 * font.cpp (Layout): Use the horiBearingX font metric.
29995 (RenderLine): Same.
29997 2007-12-03 Larry Ewing <lewing@novell.com>
29999 * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
30000 if we can't invert the matrix but still draw someting.
30002 2007-11-29 Larry Ewing <lewing@novell.com>
30004 * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
30005 bounds to the clip region as well.
30007 * control.cpp (Control::ComputeBounds): differenciate between our
30008 bounds and our subpath bounds.
30010 * control.h: add bounds_with_children and GetSubpathBounds ().
30012 2007-11-29 Jeffrey Stedfast <fejj@novell.com>
30014 * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
30015 the font face charmap, use unichar = 0 rather than returning NULL.
30017 2007-11-28 Chris Toshok <toshok@ximian.com>
30019 * runtime.cpp (Realloc): when we Realloc(), we need to tell the
30020 toplevel canvas to update its bounds. This *may* be wrong, but it
30021 definitely fixes matrix.
30022 (UpdateFullScreen): we need to stop the timesource when emitting
30023 the fullscreenchangeevent. otherwise we can end up stuck in a
30024 nested glib mainloop and never return from the emit (actually we
30025 never even invoke the JS callback in matrix. the nested loop
30026 happens somewhere deep in the bowels of NPN_Invoke).
30028 2007-11-28 Jeffrey Stedfast <fejj@novell.com>
30030 * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
30031 hack that forced the assumption of a streaming (vs progressive)
30032 media download. Also fixed to emit a DownloadProgressChanged event
30033 at progress == 1.0 (which is what th Silverlight book says we're
30036 2007-11-28 Larry Ewing <lewing@novell.com>
30038 * src/uielement.cpp (UIElement::DoRender): make sure we don't
30039 leave a path on the cairo context when clipping.
30041 2007-11-28 Chris Toshok <toshok@ximian.com>
30043 * uielement.cpp (UIElement::UIElement): compute the initial total
30044 hit test visibility.
30046 * dirty.cpp (process_dirty_elements): don't invalidate/update
30047 bounds when the hit test visibility changes.
30049 * frameworkelement.(h,cpp): calculate the bounds here using
30052 * panel.cpp: chain up to frameworkelement.
30054 2007-11-27 Jeffrey Stedfast <fejj@novell.com>
30056 * text.cpp (TextBlock::SetValue): Check the resulting Inlines
30057 collection formed from the Text property being set against the old
30058 Inlines - if no change, don't set the new Inlines collection,
30059 simply keep using the old. The idea is to prevent unnecessary
30060 layout re-calculations and invalidates.
30062 2007-11-27 Chris Toshok <toshok@ximian.com>
30064 * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
30065 canvas.cpp, collection.cpp, shape.cpp:
30067 rather large change - don't use a large rectangular bounding box
30068 encompassing both the panel's frameworkelement bounds as well as
30069 the bounds of all its children. Instead, only worry about the
30070 frameworkelement bounds, and let the children invalidate
30071 themselves. but do all this in a way that we still use the
30072 subtree's bounding box to prune rendering and hit testing.
30074 since we won't be invalidating the entire box surrounding all
30075 children, we need to propagate visibility information down the
30076 tree as we do opacity.
30078 This should really speed up most animations (such as those in
30079 sprawl and airlines) since we'll be invalidating far smaller
30082 (this code was stupidly hard for lewing and me to get right. yay
30085 2007-11-23 Larry Ewing <lewing@novell.com>
30087 * runtime.cpp: add show=expose to toggle expose display.
30089 2007-11-22 Jb Evain <jbevain@novell.com>
30091 * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
30092 a glib warning if set_properties is NULL.
30094 2007-11-21 Chris Toshok <toshok@ximian.com>
30096 * media.cpp (MediaElement::UpdateProgress): only set 1 of
30097 DownloadProgressProperty and BufferingProgressProperty. The
30098 former is used if we're playing progressively, the latter if we're
30099 buffering before playing. This fixes the buffering animation on
30102 2007-11-21 Chris Toshok <toshok@ximian.com>
30104 * runtime.cpp (Surface::Invalidate): add the int case around the
30105 complete expression to quiet gcc.
30107 2007-11-20 Larry Ewing <lewing@novell.com>
30109 * runtime.cpp (Surface::expose_event_callback): take allocation
30110 offsets into account when invalidating and drawing. Fixes
30113 2007-11-20 Chris Toshok <toshok@ximian.com>
30115 * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
30116 2.12, destroy the hash table and set it to NULL so we'll recreate
30119 2007-11-20 Chris Toshok <toshok@ximian.com>
30121 * collection.cpp (VisualRemoved): switch from using
30122 item->parent->ChildInvalidated(UIElement), use
30123 item->parent->Invalidate (item->GetBounds()).
30125 * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
30126 Invalidate (Region*) and update calls to it. Remove
30127 ChildInvalidated(UIElement*). Also, remove all references to the
30128 children_dirty_region field. everything goes through dirty_region
30131 * dirty.cpp: switch to using item->parent->Invalidate instead of
30132 item->parent->ChildInvalidated, and remove references to
30133 children_dirty_region.
30135 2007-11-20 Chris Toshok <toshok@ximian.com>
30137 * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
30138 copy before emitting an event.
30140 2007-11-20 Jeffrey Stedfast <fejj@novell.com>
30142 * runtime.cpp (surface_get_toplevel): Removed.
30144 * uielement.cpp (uielement_get_isloaded): Removed.
30146 2007-11-20 Jb Evain <jbevain@novell.com>
30148 * downloader.h (Downloader): override SetSurface and GetSurface
30149 to work on a custom surface field.
30150 * downloader.cpp (Downloader::Downloader): initialize
30152 * runtime.h (Surface::CreateDownloader): initialize the surface
30154 * collection.cpp: when removing an UIElement from an UIElementCollection,
30155 clear out its surface to NULL.
30156 * visual.cpp: remove null check preventing to set the surface to NULL.
30157 * dependencyobject.cpp: (DependencyObject::FindName): if the
30158 current DO has no parent, fallback to its surface to try
30159 FindName on its top level element (needed to call FindName
30160 on a downloader for instance). Fixes #335018.
30162 2007-11-20 Jackson Harper <jackson@ximian.com>
30164 * xaml.cpp: If we need to reparse the attributes for an element
30165 (because we loaded a class and the props need to be set on the new
30166 class) we have to clear out the hash of properties that are marked
30167 as already set. Otherwise we get a property already set error.
30169 2007-11-20 Jackson Harper <jackson@ximian.com>
30171 * xaml.cpp: Add new function to create a value from a string
30172 without having the Kind available (you still need to have the type
30174 - SetAttribute now ensures that the attribute was set properly
30175 - If the object we are trying to set an attribute on is a managed
30176 object and there is no DependencyProperty for the attribute, we
30177 try setting the attribute on the object.
30179 2007-11-20 Sebastien Pouliot <sebastien@ximian.com>
30181 * uielement.cpp: Ensure the default value for VisibilityProperty
30182 is VisibilityCollapsed even if the value is invalid (for Javascript
30183 compatibility, since 1.1 should throw an exception). See #340799
30185 2007-11-20 Stephane Delcroix <sdelcroix@novell.com>
30187 * uielement.cpp: FullInvalidate on setting Viibility to Visible.
30190 2007-11-19 Larry Ewing <lewing@novell.com>
30192 * uielement.cpp: setup the clip before push/pop group so that
30193 we reduce the temp surface size.
30195 2007-11-16 Sebastien Pouliot <sebastien@ximian.com>
30197 * transform.cpp: Use cairo_matrix_init_translate instead of
30198 cairo_matrix_init + cairo_matrix_translate where possible (which
30199 avoid the multiplication with the identity matrix).
30201 2007-11-16 Jeffrey Stedfast <fejj@novell.com>
30203 * runtime.cpp (surface_get_toplevel): New function needed by the
30204 managed land to implement a bit of a hack for the Resize
30205 event (when someone connects to the Resize event, if the toplevel
30206 canvas is already loaded, we want to immediately call the
30209 * uielement.cpp (uielement_get_isloaded): Same.
30211 2007-11-15 Jackson Harper <jackson@ximian.com>
30214 * parsertest.cpp: Some tests I use for checking the parsing
30217 2007-11-15 Jackson Harper <jackson@ximian.com>
30219 * color.h: Add equality operators.
30221 2007-11-15 Jackson Harper <jackson@ximian.com>
30223 * xaml.cpp: use isalpha for determining whether or not an int32 is
30224 an enum. This allows things like -1 to work.
30226 2007-11-15 Jackson Harper <jackson@ximian.com>
30228 * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
30231 2007-11-15 Jackson Harper <jackson@ximian.com>
30234 * rect.h|cpp: Update signatures to allow for error checking when
30235 creating types from strings.
30236 * xaml.h|cpp: Consolidate code to create values from strings, add
30237 some error checking. Update most of the parsing methods so it is
30238 possible to return errors when parsing.
30239 * playlist.cpp: Sig update.
30241 2007-11-15 Jackson Harper <jackson@ximian.com>
30243 * stylus.h|cpp: Initialize these collections so we don't get NULLs
30244 for GetValue on them.
30246 2007-11-14 Chris Toshok <toshok@ximian.com>
30248 * runtime.cpp (strcase_hash): swap this out for mono's eglib
30249 implementation, augmented with g_ascii_tolower, to remove the
30250 malloc/free and 2 passes over the string.
30252 2007-11-14 Chris Toshok <toshok@ximian.com>
30254 * dependencyobject.cpp: move the strcase_hash/equals functions...
30256 * runtime.cpp: here.
30258 * runtime.h: and make them public.
30260 * type.cpp.in, type.cpp (RegisterEvent): and use them here
30261 (RegisterType): and here.
30263 2007-11-14 Jb Evain <jbevain@novell.com>
30265 * media.cpp|h: remove specific Image and MediaElement
30266 accessors for progress property now that the code
30267 moved to MediaBase.
30269 2007-11-14 Jb Evain <jbevain@novell.com>
30271 * type.cpp.in, type.cpp, media.h, media.cpp: Move
30272 DownloadProgressProperty and DownloadProgressChangedEvent
30273 to MediaBase so it gets shared for both Image and MediaElement.
30276 2007-11-14 Jb Evain <jbevain@novell.com>
30278 * value.h.in: update code template to match current value.h.
30280 2007-11-14 Sebastien Pouliot <sebastien@ximian.com>
30282 * openfile.cpp: Added support for Filter and FilterIndex.
30284 2007-11-14 Sebastien Pouliot <sebastien@ximian.com>
30286 * animation.cpp: Replaced g_assert_not_reached with g_warning.
30287 At least until #340799 (enum validation) is fixed. Part of #335413
30288 * shape.cpp: Add g_warning to replace the g_assert_not_reached
30289 removed earlier. At least until #340799 (enum validation) is fixed.
30290 * uielement.cpp: Replaced g_assert_not_reached with g_warning.
30291 At least until #340799 (enum validation) is fixed. Part of #335413
30293 2007-11-13 Miguel de Icaza <miguel@novell.com>
30295 * value.cpp (Value::ToString): Add method to help debug some
30298 2007-11-13 Jeffrey Stedfast <fejj@novell.com>
30300 * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
30303 2007-11-13 Sebastien Pouliot <sebastien@ximian.com>
30305 * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush
30306 as this is unrequired (API wise) and can be expensive (it was enough
30307 to add custom bound calculation code to shapes and geometries).
30309 2007-11-12 Sebastien Pouliot <sebastien@ximian.com>
30311 * shape.cpp: Removed g_assert_not_reached and, if any bad value is
30312 supplied (should be catched well before that, #340799), use the
30313 default value. Fix part of #335413
30315 2007-11-09 Chris Toshok <toshok@ximian.com>
30317 * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
30318 convert this over to using our List class. Also fix a bug where
30319 elements with down dirty flags weren't being inserted propertly
30320 into the up dirty list.
30322 2007-11-09 Sebastien Pouliot <sebastien@ximian.com>
30324 * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
30326 2007-11-09 Miguel de Icaza <miguel@novell.com>
30328 * value.h (struct Value): Cope with NULL strings.
30330 2007-11-09 Jackson Harper <jackson@ximian.com>
30332 * xaml.cpp: Closepath needs to draw a line to the path's starting
30333 point and needs to create a new path figure element at the
30336 2007-11-09 Jackson Harper <jackson@ximian.com>
30338 * type.cpp|h.in: Add an accesor for the ContentProperty name.
30340 2007-11-09 Jackson Harper <jackson@ximian.com>
30342 * xaml.cpp: Rework to allow unparented properties. createFromXaml
30343 ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
30344 basically ignore the property and will return the SolidColorBrush
30345 as the top element. This fixes 335865.
30347 2007-11-08 Chris Toshok <toshok@ximian.com>
30349 [ may go a long way toward fixing #337714, if it doesn't fix it
30352 * uielement.h, uielement.cpp: add an overload of ChildInvalidated
30353 that takes a UIElement* instead of a region. The implementation
30354 just invalidates the entire bounds of the child in the parent.
30356 * collection.h, collection.cpp: we weren't breaking the
30357 item->parent link when removing visuals from a VisualCollection.
30358 Add VisualRemoved, which invalidates the child's region (and stop
30359 using child->Invalidate, since that won't work once the link to
30360 the parent is broken) and breaks the parent link. Call
30361 VisualRemoved from everywhere we remove/replace a visual in our
30362 collection. Also, rename VisualUpdated to VisualAdded, since
30363 that's more indicative of why the method is being called.
30365 2007-11-08 Jeffrey Stedfast <fejj@novell.com>
30367 * runtime.cpp (Attach): Emit the Resize event.
30368 (drawing_area_size_allocate): Emit the Resize event.
30370 2007-11-07 Chris Toshok <toshok@ximian.com>
30372 * clock.cpp (Clock::Begin): guard against division by zero.
30374 2007-11-07 Chris Toshok <toshok@ximian.com>
30376 * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
30377 width the canvas tells the surface to be (if it does). this fixes
30378 issues uncovered by larry's improved bounds checking code. Also,
30379 remove the instance fields for screen_height/width. they're only
30380 used in one place, so make them local to that function.
30382 2007-11-07 Chris Toshok <toshok@ximian.com>
30384 * brush.h, brush.cpp: add some c++ setters/getters to make some
30385 code a little smaller.
30387 2007-11-06 Larry Ewing <lewing@novell.com>
30389 * src/frameworkelement.cpp: Force a full invalidate if the width
30390 or height property because panels include their children in the
30391 bounds compution and will pass the dirty check.
30393 * media.cpp: Implement the Region based rendering for MediaElement
30396 * panel.cpp: Unconditionally pass the region to the Children.
30398 * panel.cpp: when rendering children treat panels and other
30399 objects differently. For containers pass the clipped region
30400 directly, for elements subdivide the region and paint each block.
30401 Renable FindStartingElement with a slightly less expensive
30404 * rect.cpp: don't collapse complicated regions the drawing code is
30407 2007-11-06 Jeffrey Stedfast <fejj@novell.com>
30409 * font.cpp (TextFont): Fixed to not exit() even when no font could
30410 be loaded from FreeType.
30412 2007-11-06 Chris Toshok <toshok@ximian.com>
30414 * dependencyobject.cpp (GetObjectType): make this g_critical, and
30415 also print out a stack trace if STACK_DEBUG is enabled.
30417 * dependencyobject.h: stop Emitting the DestroyedEvent from the
30418 dtor. instead do it from unref before we delete the object.
30420 2007-11-05 Chris Toshok <toshok@ximian.com>
30422 * rect.h (ToGdkRectangle): quiet countless warnings.
30424 2007-11-05 Larry Ewing <lewing@novell.com>
30426 Merge most of dirty region branch. This makes the dirty logic and
30427 rendering code use the new region class to track more complicated
30428 shapes than bounding boxes when processing changed areas.
30430 * media.cpp: switch back to indirect rendering for drawing media
30431 elements until a solution to the boundry clipping can be found.
30433 * panel.cpp: disable FindStartingElement (the buggy) until a more
30434 optimal method can be found.
30436 * dirty.cpp: Use dirty regions. Process DirtyOpacity first (still
30437 needs to be fixed to order dirty children.
30439 2007-11-03 Chris Toshok <toshok@ximian.com>
30441 * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
30442 call SkipToFill if we have no active child clocks.
30443 (ClockGroup::Stop): simplify this.
30444 (ClockGroup::Seek): make this look a little more like ::Stop.
30446 2007-11-03 Chris Toshok <toshok@ximian.com>
30448 * xaml.cpp (repeat_behavior_from_str): add support for the
30449 "ff.ffx" format for repeat behaviors.
30451 * clock.cpp, clock.h: the first sizeable amount of work done in a
30452 while to correct the multitude of tiny bugs in clock handling.
30453 this gets AnimationMatrix.xaml maybe 40% working. Clean up and
30454 comment Clock::Tick a lot, and remove a bunch of the old
30455 CLOCK_DEBUG spew which was making the code that much more
30456 difficult to look at.
30458 2007-11-02 Jeffrey Stedfast <fejj@novell.com>
30460 * font.cpp (TextFontDescription::SetScale): Removed, this hack
30461 wasn't working as well as I'd hoped.
30462 (TextFontDescription::GetScale): Same.
30463 (TextFontDescription::CreatePattern): If the requested font size
30464 is < 41.0 (seems to be the magic number where scaling loses impact
30465 on metrics), use FontSize=41.0 and do proper scaling to get the
30466 actual size we want. My worry was that asking for small font sizes
30467 (smaller than 16.0?) would look ugly with this hack, but that is
30468 surprisingly not true. By always requesting a font size that will
30469 yield the generic font metrics (e.g. not some hacked font size),
30470 we will always be able to wrap identically no matter what FontSize
30471 is requested (so long as the width gets scaled appropriately).
30473 * text.cpp (TextBlock::ComputeTransform): Removed.
30475 2007-11-02 Jeffrey Stedfast <fejj@novell.com>
30477 * font.cpp (RenderLine): Render glyphs with index 0 too, so that
30478 we render an empty box for glyphs not in the font (just like
30481 * text.cpp (ComputeTransform): Fixed to use the correct matrix for
30482 getting the scale values.
30484 2007-11-01 Jackson Harper <jackson@ximian.com>
30492 * panel.h: Add ContentProperty 'attributes'.
30494 * type.cpp|h: Add content property information to types. This
30495 will be used by the parser and will allow the parser to drop it's
30496 special type system.
30498 2007-11-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
30500 * animation.cpp: AnimationStorage: unregister from registered events on
30503 2007-11-01 Jeffrey Stedfast <fejj@novell.com>
30505 * text.cpp (TextBlock::SetValue): Oops - if we are setting an
30506 empty string on the Text property, then we need to clear out
30507 whatever was there before (if anything).
30509 2007-10-31 Jeffrey Stedfast <fejj@novell.com>
30511 Fixes for handling lwsp cdata between <Run> elements.
30513 * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
30514 arg suggesting that we are being called in response to a new
30515 element starting vs an element ending.
30516 (start_element_handler): Pass true as the start arg to
30518 (end_element_handler): Pass false as the start arg to
30521 * text.cpp (SetValue): Only add a run if the string is non-empty.
30523 2007-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
30525 * dependencyobject.cpp: Guard against calling NULL.
30527 2007-10-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
30529 * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
30530 return value is always checked.
30532 2007-10-31 Chris Toshok <toshok@ximian.com>
30534 * trigger.cpp (EventTrigger::SetTarget,
30535 EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
30538 2007-10-31 Jackson Harper <jackson@ximian.com>
30540 * dependencyobject.h|cpp: Give DependencyProperties the ability to
30543 * animation.cpp: Signature updates
30545 2007-10-30 Jackson Harper <jackson@ximian.com>
30547 * xaml.h: Add the error args to the loader.
30548 * xaml.cpp: Make most of our parsing errors match Silverlight.
30550 2007-10-30 Jeffrey Stedfast <fejj@novell.com>
30552 * font.cpp (Path): Check the path data != NULL before we make any
30553 cairo calls, no sense wasting cycles if we will no-op in the end.
30555 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
30557 * media.cpp, media.h: Fix signedness mismatch warning.
30559 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
30561 * mplayer.h: Added asf_player field.
30563 2007-10-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
30565 * Makefile.am: Add files in asf/.
30566 * media.cpp, media.h: Read ASF markers from the file. Save the position when
30567 advancing frames. Use the difference between the last position and the
30568 current position to determine if any MarkerReached events are supposed
30570 * mplayer.cpp: Add some error checking/reporting when opening streams.
30571 Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
30572 to actually use it).
30574 2007-10-26 Jeffrey Stedfast <fejj@novell.com>
30576 * font.cpp (RenderLine): Split out from TextLayout::Render() and
30577 made to reset the brush at each segment to match Silverlight's
30580 2007-10-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
30582 * debug.cpp: Added print_gdb_trace with an explaining comment.
30583 * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
30586 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
30588 * font.cpp (TextLayout::Render): Set y1 before creating/appending
30589 the path instead of in the segment loop.
30590 (TextLayout::Render): Make underline pos relative to y1 (aka the
30591 baseline) that we calculated above. Makes this easier to
30594 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
30596 * font.cpp (TextLayout::Layout): Always calculate segment->width
30598 (TextLayout::Render): Not here.
30600 * text.cpp (Glyphs::GetTransformOrigin): Implemented.
30602 2007-10-25 Jackson Harper <jackson@ximian.com>
30605 * runtime.h|cpp: Add the Error event to the surface. Raising this
30606 event will cause the plugins onError handler to be invoked, the
30607 default onError handler notifies the user of the error with a
30610 2007-10-25 Sebastien Pouliot <sebastien@ximian.com>
30612 * stylus.cpp|h: Keep the semi-working code as a fast path to
30613 render strokes (if no outline color is used and when width ==
30614 height). Added a hack to support OutlineColor.
30616 2007-10-25 Jeffrey Stedfast <fejj@novell.com>
30618 * brush.cpp (Brush::SetupBrush): Now takes width and height
30619 arguments. Updated all brushes.
30621 * text.cpp (Glyphs::Render): We want to check this->width and
30622 this->height, not the width/height arguments.
30624 * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
30625 yet (surface = NULL), return.
30626 (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
30629 2007-10-24 Jeffrey Stedfast <fejj@novell.com>
30631 * text.cpp (Glyphs::GetSizeForBrush): Implemented.
30633 * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
30635 2007-10-24 Jackson Harper <jackson@ximian.com>
30637 * type.cpp.in/h.in: Add some c-style functions for creating
30640 2007-10-24 Jackson Harper <jackson@ximian.com>
30643 * type.cpp.in/h.in: Add a create instance call to types. This
30644 will allow the parser to use our Type object instead of creating
30647 2007-10-24 Chris Toshok <toshok@ximian.com>
30649 * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
30650 g_main_context_iteration so we don't block if there isn't anything
30651 to do. also, emit 3 TickEvents to make sure the tick is
30652 propagated down into the animations.
30654 2007-10-24 Rolf Bjarne Kvinge <RKvinge@novell.com>
30656 * xaml.cpp: No need to check if the created object is an UIElement before
30657 calling SetSurface anymore.
30658 * visual.h: Update SetSurface to virtual.
30659 * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
30661 * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
30662 the methods do nothing, the surface is still stored in Visual, but this
30663 allows classes that do not inherit from Visual to correctly set the
30664 surface on their members which do inherit from Visual).
30666 2007-10-24 Jeffrey Stedfast <fejj@novell.com>
30668 * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
30670 2007-10-23 Jeffrey Stedfast <fejj@novell.com>
30672 * text.cpp (TextBlock::ComputeTransform): If the scale has
30673 changed, set dirty = true so that we recalculate the layout.
30675 * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
30676 macro, just do it w/o so that we hush the compiler warning.
30678 2007-10-23 Chris Toshok <toshok@ximian.com>
30680 * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
30681 a clock in absolute terms. instead, offset it from the current
30682 time of the parent clock (or time manager).
30683 (Clock::Begin): clamp progress to 1.0
30684 (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
30685 by making it less sensitive to immediate changes.
30687 2007-10-23 Chris Toshok <toshok@ximian.com>
30689 * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
30690 audio (so we sync to the clock).
30692 * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
30694 2007-10-23 Chris Toshok <toshok@ximian.com>
30696 * clock.cpp (ManualTimeSource::SetCurrentTime): call
30697 g_main_context_iteration as a stopgap to make video elements show
30699 (TimeManager::TimeManager): remove spew.
30700 (TimeManager::Tick): re-enable the clock throttling. oops.
30702 2007-10-23 Larry Ewing <lewing@novell.com>
30704 * src/runtime.cpp: clear the background in more cases.
30706 2007-10-23 Larry Ewing <lewing@novell.com>
30708 * src/runtime.cpp: make the eventbox windowless and remove the
30709 stale event code. Let gtk do the clearing.
30711 2007-10-23 Jeffrey Stedfast <fejj@novell.com>
30713 * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
30714 (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
30715 the correct frame rather than just rendering the first frame we
30718 2007-10-23 Chris Toshok <toshok@ximian.com>
30720 * mplayer.cpp: replace all occurences of av_gettime with
30721 TimeManager::Instance()->GetCurrentTimeUsec().
30723 * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
30725 (render_cb): re-enable the fps on the console. oops.
30727 * runtime.h (RuntimeInitFlags): add
30728 RUNTIME_INIT_TIMESOURCE_MANUAL.
30730 * type.h.in, type.cpp.in: remove BASE (should have happened on my
30731 last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
30734 * type.h, type.cpp: sync to the .in files.
30736 * clock.h, clock.cpp: add the idea of a TimeSource to the
30737 TimeManager. Two are written - SystemTimeSource, which uses the
30738 gtk timeout, and ManualTimeSource, which allows code to set what
30739 the global time should be. Also, add GetCurrentTimeUsec() for use
30740 by mplayer, so we can switch it away from av_gettime and make it
30741 possible for video to sync to the ManualTimeSource.
30743 2007-10-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
30745 * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
30747 2007-10-23 Larry Ewing <lewing@novell.com>
30749 * runtime.cpp: make sure we unref the surface.
30751 2007-10-23 Larry Ewing <lewing@novell.com>
30753 * runtime.cpp: avoid making gdk calls that pull in the platform
30756 2007-10-22 Jeffrey Stedfast <fejj@novell.com>
30758 * text.cpp: Don't allow Pango rendering if disabled at
30760 (TextBlock::ComputeTransform): Moved the scale logic here from
30761 OnPropertyChanged() so that we catch all transform changes.
30763 * uielement.h: Made ComputeTransform() virtual.
30765 2007-10-22 Chris Toshok <toshok@ximian.com>
30767 * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
30768 we can just cast to Clock here.
30770 * dependencyobject.h, dependencyobject.cpp: remove the Base class,
30771 and make roll EventObject and Base into one class (still called
30774 2007-10-20 Sebastien Pouliot <sebastien@ximian.com>
30776 * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
30777 * stylus.cpp|h: Add some missing functions. Rendering changes
30778 (not active, work in progress).
30780 2007-10-18 Chris Toshok <toshok@ximian.com>
30782 * dependencyobject.h: fix comment.
30784 * animation.h, animation.cpp: use the
30785 Clock::CurrentStateInvalidated event to reset the property value
30786 to baseValue instead of overriding the Clock::Stop method. This
30787 fixes clocks with FillBehavior="Stop" instead of storyboard with
30788 FillBehavior="Fill".
30790 * clock.cpp (Clock::Tick): remove a stupid block of code that was
30791 causing clocks which were Filling to spontaneously end up in their
30792 Active state again.
30794 2007-10-18 Sebastien Pouliot <sebastien@ximian.com>
30796 * geometry.cpp: New code to handle arc segments. No known issues
30797 (except the handling of near zero values which doesn't seems to
30799 * libmoon.h, Makefile.am: Remove reference to rsvg.h
30800 * rsvg.cpp|h: Remove from SVN.
30802 2007-10-17 Andrew Jorgensen <ajorgensen@novell.com>
30804 * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
30805 based on the ones from libgdiplus.
30807 2007-10-17 Chris Toshok <toshok@ximian.com>
30809 * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
30810 created managed dob to the created_elements list so it gets
30812 (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
30813 (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
30815 2007-10-17 Chris Toshok <toshok@ximian.com>
30817 * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
30818 (sizes_LDADD): same.
30820 2007-10-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
30822 * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
30823 OBJECT_TRACKING isn't defined.
30824 * runtime.h: Enable the contextual downloader warning again.
30825 * dependencyobject.cpp: Fix build when DEBUG is defined.
30827 2007-10-16 Jeffrey Stedfast <fejj@gnome.org>
30829 * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
30830 properties changing value, don't fall thru to the rest of the
30831 checks (as then we'd re-emit it to sublisteners which isn't what
30832 we want I don't think). Also, don't change the font scale unless
30833 it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
30835 2007-10-16 Jeffrey Stedfast <fejj@novell.com>
30837 * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
30838 changes and apply the y-scale to the font so that we can more
30839 accurately path the font glyphs at the scale we intend to render
30842 * font.cpp (TextFont): Cache the scale here.
30843 (Kerning): Apply the scale.
30844 (Descender): Here too.
30845 (Ascender): And here.
30847 (GetGlyphInfo): Create and apply the scale/invert matrix. Also
30848 scale the glyph metrics.
30849 (UnderlinePosition): Apply the scale.
30850 (UnderlineThickness): Same here.
30851 (TextFontDescription): Added a scale, default to 1.0
30852 (CreatePattern): Set the scale on the pattern.
30853 (UnsetFields): When unsetting values, restore them to their
30855 (Merge): Merge the scale.
30856 (GetScale): New method.
30857 (SetScale): New method.
30859 2007-10-16 Chris Toshok <toshok@ximian.com>
30861 * dependencyobject.cpp (detach_depobj_values): call
30862 obj->SetParent(NULL) here as well, so we don't reference a
30865 * runtime.cpp (Surface::Surface): use Surface::timeline instead of
30867 (Surface::~Surface): make sure to remove the surface's clock_group
30868 from the time manager. Also, unref the timeline we create in the
30870 (runtime_shutdown): reimplement the oldest 10 alive object
30871 printing stuff in the face of using a hashtable.
30873 * runtime.h: add Surface::timeline, so we can clean it up in
30876 * dependencyobject.h (Base::) use a hash table to track alive
30877 objects instead of a list. this speeds up things immensely.
30879 * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
30880 children so any further GetParent() calls won't return a destroyed
30883 * animation.cpp (Storyboard::~Storyboard): guard against a crash
30884 when a parent clock is freed before the child clock.
30886 * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
30888 2007-10-15 Chris Toshok <toshok@ximian.com>
30890 * animation.[h,cpp]: remove the strong reference from
30891 AnimationStorage to its target object, and instead use the
30892 EventObject::DestroyEvent to implement a weak reference. See the
30893 TODO for a blurb about generalizing this.
30895 * typegen.cs (GenerateTypeCpp): remove the special case code that
30896 makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
30897 EVENTOBJECT as the parent for the DestroyedEvent to line up
30898 properly in the event tables.
30900 * type.cpp.in, type.cpp (types_init_register_events): register the
30903 * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
30904 emitted just before we clean up the EventObject's event list.
30906 2007-10-15 Jeffrey Stedfast <fejj@novell.com>
30908 * text.cpp (Layout): I think I finally figured out the scaling to
30909 apply to the units provided in the Indices property and also
30910 discovered that the Advance is not applied at the uOffset, it is
30911 applied independently of the uOffset.
30912 (Render): Same fixes as in Layout().
30914 2007-10-13 Chris Toshok <toshok@ximian.com>
30916 * animation.cpp (balf): fix bug 325175 by not taking the square
30917 root of a negative number (fixes the flashing in the credits for
30918 Monotone.) Also clean up this code so that we're not using
30919 globals to communicate parameters (through Simpson) between balf
30920 and BezierArcLength, and lower the tolerance (I doubt we need
30921 *that* much precision).
30923 2007-10-12 Chris Toshok <toshok@ximian.com>
30925 * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
30926 dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
30927 transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
30928 which gives the actual object whose property changed. Also, in a
30929 few instances fix the NotifyAttachersOnPropertyChanged call that
30930 some classes used to not use the subprop, but the prop. The
30931 subprop doesn't refer to "this" in those instances, but to @obj.
30932 @prop refers to "this".
30934 * collection.[h,cpp]: use the above change to correctly support
30935 the DependencyObject parameter of OnCollectionChanged (when the
30936 change type is ItemChanged).
30938 * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
30939 move the ZIndex property support from UIElement to Panel, which
30940 makes more logical sense (and is likely the reason MS removed the
30941 property from UIElement in 1.1) -- ZIndex is about what happens to
30942 this UIElement in relation to its siblings.
30944 2007-10-12 Sebastien Pouliot <sebastien@ximian.com>
30946 * shape.cpp: Only set miter limit if line join is set to miter.
30948 2007-10-12 Chris Toshok <toshok@ximian.com>
30950 * collection.cpp: move the panel logic away from VisualCollection.
30951 It belongs in Panel::OnCollectionChanged.
30953 * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
30954 everything the VisualCollection code used to do on its behalf.
30956 * uielement.h, uielement.cpp: introduce a new field for use with
30957 the dirty code - force_redraw_of_new_bounds. Basically, we set
30958 the field according to the parameter passed to UpdateBounds.
30960 * dirty.cpp (UpdateBounds): force an invalidate if
30961 el->force_redraw_of_new_bounds is set.
30963 2007-10-12 Chris Toshok <toshok@ximian.com>
30965 * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
30966 RemoveTimeout) which wrap the glib timeout calls we were making.
30967 This lets us keep track of active timeout ids and remove them all
30968 when the TimeManager shuts down. So, if we leak MediaElements
30969 (which seems to be happening in TopBanana), we don't crash.
30971 * mplayer.cpp: use the new TimeManager timeout call instead of the
30972 glib mainloop directly.
30976 2007-10-12 Jeffrey Stedfast <fejj@novell.com>
30978 * downloader.cpp (downloader_init): Default the DownloadProgress
30981 2007-10-12 Jackson Harper <jackson@ximian.com>
30983 * downloader.h: Add an access to the downloader state. I need
30984 this in the plugin.
30986 2007-10-12 Jb Evain <jbevain@novell.com>
30988 * brush.cpp|h: add image_brush_set_source.
30990 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
30992 * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
30993 where it doesn't handle J-Type picture frames.
30995 2007-10-11 Sebastien Pouliot <sebastien@ximian.com>
30997 * panel.cpp|h: Split Render into Render and RenderChildren, so
30998 the later can be overriden in InkPresenter.
30999 * stylus.cpp|h: A quick (see FIXME) implementation to render
31000 ink found in some xaml files.
31002 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
31004 * mplayer.cpp: Updated to use the new Queue class.
31005 (AdvanceFrame): Accessing the queue directly as a linked list
31006 allows us to simplify the loop a little so that we don't have to
31007 keep a reference to the previous packet's decoded frame.
31009 * list.cpp: Added a new Queue class which will replace GAsyncQueue
31012 2007-10-11 Jeffrey Stedfast <fejj@novell.com>
31014 * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
31015 (AdvanceFrame): Keep a reference to the previous frame in case we
31016 reach the end of the queue.
31018 2007-10-11 Jb Evain <jbevain@novell.com>
31020 * dependencyobject.cpp|h: add dependency_object_set_name.
31022 * media.cpp|h: add media_attribute_get_value and
31023 media_attribute_set_value
31025 * playlist.cpp|h: populate MediaAttributeCollection when
31026 a playlist entry is opened.
31028 2007-10-11 Larry Ewing <lewing@novell.com>
31030 * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
31031 areas... have more fun in general.
31033 * src/rect.h: replace Floor function with RoundOut function.
31034 * panel.cpp, dirty.cpp: use RoundOut where appropriate. Fixes
31035 clipping issue in sprawl.
31037 2007-10-11 Sebastien Pouliot <sebastien@ximian.com>
31039 * xaml.cpp: Let InkPresenter handle childs like a Canvas (from
31042 2007-10-11 Jb Evain <jbevain@novell.com>
31044 * playlist.cpp: replace C++ casts to plain casts.
31046 2007-10-11 Jb Evain <jbevain@novell.com>
31048 * collection.cpp: replace dynamic_casts with plain casts
31049 as per Miguel suggestion.
31051 2007-10-11 Jb Evain <jbevain@novell.com>
31053 * collection.cpp|h: add, implement and expose the
31054 MediaAttributeCollection::GetItemByName method.
31056 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
31058 * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
31060 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
31062 * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
31063 * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
31064 char/char mismatch warnings.
31065 * visual.cpp: Fix no newline warning.
31066 * runtime.cpp: Fix a initialization warning.
31067 * demo.cpp: Remove unused variable.
31069 2007-10-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
31071 * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
31072 matches base_unref behaviour.
31073 * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
31076 2007-10-10 Chris Toshok <toshok@ximian.com>
31078 * runtime.cpp (runtime_shutdown): explicitly drain all remaining
31079 pending managed unrefs.
31081 * dependencyobject.cpp: remove the Base::ref/unref implementations
31082 from here. Add the threadsafe base_unref_delayed code, as well as
31083 code to manage a tick call to free up the instances on the next
31084 clock tick. Also provide an external api (drain_unrefs -- bad
31085 name, fix me plz k thx) so that runtime.cpp can explicitly unref
31086 everything when we shutdown (if they haven't already been dealt
31089 * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
31090 we don't have 2 implementations of all these methods. Instead,
31091 just ifdef the relevant portions of the methods, and keep them in
31092 dependencyobject.h. Also, add prototypes for drain_unrefs and
31093 base_unref_delayed, which is called from managed code.
31095 * collection.h, collection.cpp: make Clear take an optional
31096 "emit_event" argument (default = true.) Call Clear instead of
31097 list->Clear(true) in our dtor so we clean up the namespaces and
31100 * debug.cpp: use an extern "C" block. looks nicer.
31102 2007-10-10 Sebastien Pouliot <sebastien@ximian.com>
31104 * brush.cpp: Handle GradientStop with negative offset like
31105 Silverlight (seems to) do.
31107 2007-10-10 Chris Toshok <toshok@ximian.com>
31109 * panel.cpp (Panel::~Panel): no need to clear our Children
31110 collection. the normal dtor stuff will do that for us.
31112 2007-10-10 Larry Ewing <lewing@novell.com>
31114 * media.cpp: Fill with the element extents don't just paint the
31115 surface because if the stretch is specified we may end up painting
31116 outside the proper area.
31118 2007-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
31120 * media.cpp: When updating the MediaElement's progress, get the Downloader's
31121 DownloadProgressProperty.
31123 2007-10-10 Rolf Bjarne Kvinge <RKvinge@novell.com>
31125 * visual.cpp, visual.h: Added visual_set_surface, and guard against
31126 overwriting a set surface with null.
31128 2007-10-10 Jackson Harper <jackson@ximian.com>
31130 * collection.cpp: Set the surface when adding a visual element.
31132 2007-10-10 Jackson Harper <jackson@ximian.com>
31134 * shape.cpp: We need to do something when line properties are
31135 changed. Fixes test-animation-line.xaml
31137 2007-10-10 Jackson Harper <jackson@ximian.com>
31139 * xaml.cpp: Don't allow the same property to be set twice.
31141 2007-10-09 Jackson Harper <jackson@ximian.com>
31143 * xaml.cpp: When we create custom elements we also need to set the
31144 surface on them and mark them for cleanup.
31146 2007-10-09 Jackson Harper <jackson@ximian.com>
31148 * xaml.cpp: When we are creating objects from a string, set the
31149 encoding to utf8 so that expat doesn't try to determine the
31150 encoding from the ?xml declaration (which will be incorrect
31151 because the string is in utf8).
31153 2007-10-09 Chris Toshok <toshok@ximian.com>
31155 * clock.cpp (ClockGroup::Stop): If the clock group has children we
31156 depend on stopping them first. But if the clock group is without
31157 children, chain up to Clock::Stop here.
31159 2007-10-09 Jb Evain <jbevain@novell.com>
31161 * uielement.h: define new methods RenderClipPath and
31162 IntersectBoundsWithClipPath.
31163 * uielement.cpp: implement them.
31164 * panel.cpp, shape.cpp, media.cpp: use them.
31166 2007-10-09 Chris Toshok <toshok@ximian.com>
31168 * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
31169 frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
31170 brush.cpp, text.cpp: s/Attachee/Attacher.
31172 * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
31173 call that is used at dtor time to call Detach on all
31174 DependencyObject-subclassed Values, and 2) make NULL available in
31175 detach as a wildcard - passing NULL for the property detaches all
31176 properties that the current object might be watching on.
31178 Also, correct a longstanding problem in terminology/api. if A's
31179 code calls B->Attach (..., this), then A is the Attacher, not the
31180 Attachee. Basically s/Attachee/Attacher in all places,
31183 * dependencyobject.cpp: same changes as above. Also, change the
31184 current_values hash table to key off the DependencyProperty, not
31185 off the DependencyProperty name. This allows us to use a direct
31186 hash, as opposed to a string hash.
31188 * collection.cpp (dtor): make sure sure to detach from all the
31189 list elements before we clear the list.
31191 2007-10-09 Jeffrey Stedfast <fejj@novell.com>
31193 * font.cpp (Layout): Only break words on ASCII lwsp, we should not
31194 break on nbsp's for example.
31196 2007-10-09 Jackson Harper <jackson@ximian.com>
31198 * xaml.cpp: Make sure the Surface gets set on custom created
31199 UIElements. Also add them to the created list, so they get freed.
31201 2007-10-09 Jackson Harper <jackson@ximian.com>
31203 * control.cpp: Since controls are UIElements we need to make sure
31204 their surface is set when we create them from XAML.
31206 2007-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
31208 * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
31210 2007-10-09 Rolf Bjarne Kvinge <RKvinge@novell.com>
31212 * debug.cpp, debug.h: Conditionally compile support for managed stack
31215 * runtime.cpp: add more debug code.
31217 2007-10-08 Jeffrey Stedfast <fejj@novell.com>
31219 * text.cpp (OnPropertyChanged): We may need to relayout even if
31220 the wrapping is set to NoWrap.
31222 2007-10-08 Zoltan Varga <vargaz@gmail.com>
31224 * text.cpp (OnPropertyChanged): Do a relayout if the Width property
31225 changes and text wrapping is enabled.
31227 2007-10-08 Jeffrey Stedfast <fejj@novell.com>
31229 * mplayer.cpp (Open): If the media has video, load the first video
31232 (AdvanceFrame): Fixed to "end" properly.
31234 * media.cpp: Don't manually call DisplayFrame() anymore.
31236 2007-10-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
31238 * xaml.cpp: Set the surface of newly created objects (where applicable).
31239 * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
31240 * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
31241 brand new CreateDownloader method.
31242 * visual.h: Added a surface field, complete with setters and getters.
31243 * downloader.cpp, downloader.h: Add a context field.
31244 * runtime.h: Add a downloader_context field, and CreateDownloader methods.
31245 * runtime.cpp: Add a downloader_context field.
31247 2007-10-09 Larry Ewing <lewing@novell.com>
31249 * media.cpp: add clipping to shape::DoDraw and to the bounds
31252 2007-10-08 Larry Ewing <lewing@novell.com>
31255 * panel.cpp: intersect the bounds with the clip path to
31256 optimize the invalidated region.
31258 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31261 2007-10-08 Larry Ewing <lewing@novell.com>
31264 * panel.cpp: intersect the bounds with the clip path to
31265 optimize the invalidated region.
31267 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31270 2007-10-08 Larry Ewing <lewing@novell.com>
31273 * panel.cpp: intersect the bounds with the clip path to
31274 optimize the invalidated region.
31276 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31279 2007-10-08 Larry Ewing <lewing@novell.com>
31282 * panel.cpp: intersect the bounds with the clip path to
31283 optimize the invalidated region.
31285 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31288 2007-10-08 Larry Ewing <lewing@novell.com>
31291 * panel.cpp: intersect the bounds with the clip path to
31292 optimize the invalidated region.
31294 * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31297 2007-10-08 Larry Ewing <lewing@novell.com>
31299 * runtime.cpp: change previous logic to drop the alpha
31300 completely here until more testing can be done.
31302 2007-10-08 Larry Ewing <lewing@novell.com>
31304 * runtime.cpp: draw the background color blended over white.
31306 2007-10-08 Larry Ewing <lewing@novell.com>
31308 * media.cpp: render clip paths on media elements.
31310 2007-10-07 Larry Ewing <lewing@novell.com>
31315 * array.cpp: use g_utf8_next_char in some places to start making
31316 the parsers more utf8 safe. Make rect/point_from_str more robust
31317 against separator characters
31319 2007-10-07 Chris Toshok <toshok@ximian.com>
31321 * clock.cpp (Clock::Tick): make sure we're reversed before
31322 switching to Fill if the clock is at 0 (and make sure we're not
31323 reversed before switching to Fill on the other end of the
31324 timespan). Some animations were skipping directly to fill without
31326 (ClockGroup::Tick): don't Tick a child clock if it's about to
31327 Stop. the new tick might cause it to fill.. this needs work
31330 2007-10-06 Jb Evain <jbevain@novell.com>
31332 * media.cpp (Image::Render): Deal with clipping.
31334 2007-10-05 Chris Toshok <toshok@ximian.com>
31336 * animation.cpp (KeyFrameComparer): fix airlines (and probably a
31337 host of other keyframe usage besides). The problem was that this
31338 function was treating its args as keyframe*'s, when in actuality
31339 they were keyframe**'s. that explains the intermittent nature of
31340 the bug, as well as the faulty sorting I was experiencing earlier.
31342 * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
31344 2007-10-05 Chris Toshok <toshok@ximian.com>
31346 * clock.cpp (TimeManager::Tick): I have no idea how this is
31347 possible, but the throttle code is *completely* screwing up the
31348 Airlines demo animations.
31350 2007-10-05 Jackson Harper <jackson@ximian.com>
31352 * control.cpp: need to pass this down. Fixes dragging controls in
31355 2007-10-05 Jeffrey Stedfast <fejj@gnome.org>
31357 * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
31360 (SetValue): And here too after a Seek() (altho it won't work if
31361 the media is paused).
31363 * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
31364 update, which is true if any avcodec_decode_video() sets redraw to
31366 (DisplayFrame): New method largely based on JB's work to load the
31367 current video frame into the mplayer surface.
31369 2007-10-05 Jb Evain <jbevain@novell.com>
31371 * media.cpp|h, playlist.cpp|h: Don't open the first entry
31372 when a playlist entry has been stopped before switching to
31375 2007-10-04 Chris Toshok <toshok@ximian.com>
31377 * clock.cpp: fix a couple of compilation warnings, and tighten up
31378 the list_clocks output.
31380 2007-10-04 Jeffrey Stedfast <fejj@gnome.org>
31382 * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
31383 since it is not locale dependant.
31385 * rect.cpp (rect_from_str): Same.
31387 * point.cpp (point_from_str): Same.
31389 * xaml.cpp (get_point): Fixed to update *in properly on success.
31391 2007-10-05 Jb Evain <jbevain@novell.com>
31393 * media.cpp: correctly advertise 'Opening' state of MediaElement.
31395 2007-10-04 Jeffrey Stedfast <fejj@novell.com>
31397 * xaml.cpp: (more_points_available): Simplified by looping while
31398 isspace. Also, update our input pointer if we have to scan over
31400 (get_point): Now returns bool based on whether it manages to
31401 extract a point or not.
31402 (geometry_from_str): Updated.
31404 2007-10-04 Jackson Harper <jackson@ximian.com>
31406 * xaml.cpp: Points after the initial two line points should
31407 actually create new line segments, not a polyline, this fixes
31408 relative points on multiple lines.
31410 2007-10-04 Jeffrey Stedfast <fejj@novell.com>
31412 * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
31413 hasn't completely been initialized.
31414 (Glyphs::SetIndices): Do not do scaling here, this seems to be
31415 font size dependant.
31417 * shape.cpp (DoDraw): Use 'delete []' to free dmul.
31419 2007-10-04 Jackson Harper <jackson@ximian.com>
31421 * xaml.cpp: Handle repeated bezier segments properly.
31423 2007-10-04 Chris Toshok <toshok@ximian.com>
31425 * clock.cpp: lots of little changes. fixes clock16.xaml, and
31426 therefor the score animation in dr.popper goes away properly.
31427 also fixes a few other issues with FillBehavior (checked by our
31430 2007-10-04 Jeffrey Stedfast <fejj@gnome.org>
31432 * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
31434 (Layout): Use a local TextFont variable.
31436 (text_init): Always call font_init() as Glyphs use it even when
31437 text=pango is specified.
31439 2007-10-04 Sebastien Pouliot <sebastien@ximian.com>
31441 * shape.cpp|h: Shapes that uses their Width and Height must use
31442 them for brush size. Fix brush rendering when used with
31443 UIElement.RenderTransform property.
31445 2007-10-03 Chris Toshok <toshok@ximian.com>
31447 * text.cpp: make Glyphs usable even when text=pango. "usable"
31448 means "don't crash" :)
31450 2007-10-03 Chris Toshok <toshok@ximian.com>
31452 * uielement.h: rename UseAA() to EnableAntiAlias(). it's
31453 arguably a better name, and more importantly it's the name that
31454 media.cpp/h changed it too, which broke the AA hack used in
31457 * dirty.cpp (process_dirty_elements): rename UseAA() to
31460 2007-10-03 Sebastien Pouliot <sebastien@ximian.com>
31462 * array.cpp: Move double array allocations back to new/delete.
31464 2007-10-03 Jeffrey Stedfast <fejj@novell.com>
31466 * font.cpp (EmSize): Removed, not needed.
31467 (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
31468 bit of memory that we aren't using.
31470 * text.cpp (TextBlock::SetFontSource): Implemented.
31471 (text_init): Default StyleSimulations to None.
31473 2007-10-03 Sebastien Pouliot <sebastien@ximian.com>
31475 * brush.cpp|h: SL and Cairo defaults to different values (end
31476 color versus start color) when a gradiant is restricted to a
31477 single color (e.g. if the start and end points of a linear
31478 gradient are identical).
31480 2007-10-03 Jeffrey Stedfast <fejj@novell.com>
31482 * text.cpp: Implemented the Glyphs element.
31484 * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
31485 with the the Glyphs element implemented in text.cpp.
31486 (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
31487 (GetGlyphInfoByIndex): New method.
31488 (CreatePattern): If the filename is specified, don't call
31489 FcFontMatch(), simply return the constructed pattern.
31491 2007-10-02 Chris Toshok <toshok@ximian.com>
31493 * clock.h, clock.cpp: remove TimeManager::current_fps, it's
31496 2007-10-02 Chris Toshok <toshok@ximian.com>
31498 * runtime.cpp (Surface::UpdateFullScreen): just call
31499 gtk_window_fullscreen instead of setting decorations/above
31500 manually. this puts us on top of the panel.
31502 2007-10-02 Chris Toshok <toshok@ximian.com>
31504 * clock.h, clock.cpp: rip out the old stupid throttling code and
31505 replace it with an exponential moving average of the delays.
31507 2007-10-02 Chris Toshok <toshok@ximian.com>
31509 * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
31510 use them to make test/xaml/clock8.xaml work.
31512 2007-10-02 Larry Ewing <lewing@novell.com>
31514 * shape.cpp (Path::ComputeBounds): use the specified width/height
31515 if stretch is != StretchNone. Fixes rendering issues with halo
31516 and several other sites.
31518 2007-10-02 Chris Toshok <toshok@ximian.com>
31520 * animation.h, animation.cpp: override Stop() on AnimationClocks
31521 so we can reset the property value to the baseValue stored in our
31524 * clock.h, clock.cpp: fix the starting of stopped clockgroups when
31525 there are active children (fixes the storyboards running for 1
31526 tick then stopping). Add more convoluted code in order to get the
31527 expected behavior when FillBehavior=Stop on a storyboard.
31529 2007-10-02 Chris Toshok <toshok@ximian.com>
31531 * clock.h, clock.cpp: a few changes. quit with all the delay
31532 computation in the throttling code, and just deal with fps until
31533 we're ready to switch to delays. it simplifies everything a
31534 bunch. Also, narrow the type for Clock::Get/SetParent to
31535 ClockGroup. Add some rudimentary code for printing out the state
31536 of all clocks (use TimeManager::Instance()->ListClocks() or
31537 time_manager_list_clocks()). Also, remove the TimeManager::Tick
31538 code which started clocks. This commit changes the way
31539 storyboards are registered, so the only things in the
31540 TimeManager's list should be the per-surface ClockGroups, which
31541 are started in Storyboard::Begin (if they aren't already running.)
31543 * collection.cpp (VisualCollection::Add): this is a bug waiting to
31544 happen. Call VisualUpdate (thereby setting the child's parent and
31545 initializing the transforms/opacity) before emitting Loaded on the
31548 * animation.h, animation.cpp: Storyboards now add their clocks to
31549 the per-surface ClockGroup. This involves some groveling to find
31550 the surface, but it's nothing we haven't seen before. There's no
31551 direct TimeManager calls here now - stopping the surface's
31552 ClockGroup will stop all animations running on it.
31554 * runtime.h, runtime.cpp: add the per-surface ClockGroup. all
31555 storyboards attach to this, and this attaches to the TimeManager.
31557 2007-10-02 Jackson Harper <jackson@ximian.com>
31559 * media.cpp: Some default values to avoid nullref exceptions.
31561 2007-10-02 Sebastien Pouliot <sebastien@ximian.com>
31563 * xaml.cpp: Add support for 'F' in the PML parser to enable setting
31564 the FillMode of Geometry objects. Removed default value set as it is
31565 identical to the default property value.
31567 2007-10-02 Jb Evain <jbevain@novell.com>
31569 * playlist.cpp|h: implemented start time for playlist entries.
31571 2007-10-02 Jb Evain <jbevain@novell.com>
31573 * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
31575 2007-10-02 Larry Ewing <lewing@novell.com>
31577 * uielement.cpp (UIElement::Invalidate): Only invalidate if
31579 * dirty.cpp (process_dirty_elements): be sure to invalidate before
31580 and after the opacity change.
31582 2007-10-02 Jb Evain <jbevain@novell.com>
31584 * playlist.cpp: deal with non lowercase file exts.
31586 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
31588 * font.cpp: Reduced Glyph table memory usage.
31590 2007-10-01 Chris Toshok <toshok@ximian.com>
31592 * dirty.cpp (process_dirty_elements): remove the special if checks
31593 which kept the ComputeBounds/Invalidate code from running on the
31594 toplevel surface. Canvas::ComputeBounds() does the right thing
31595 for the toplevel surface, so we just trust it. fixes invalidation
31598 * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
31599 (OnSubPropertyChanged): same.
31601 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
31603 * brush.cpp|h: Change SetupBrush and SetupGradient signatures to
31604 void (instead of the, now, unused bool);
31606 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
31608 * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
31610 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
31612 * shape.cpp|h: Remove Path::IsFilled since the property
31613 PathFigure::IsFilledProperty doesn't exists anymore.
31615 2007-10-01 Jeffrey Stedfast <fejj@novell.com>
31617 * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
31620 * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
31622 2007-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
31624 * runtime.cpp: Only show the server as the url in the fullscreen
31627 2007-10-01 Sebastien Pouliot <sebastien@ximian.com>
31629 * panel.cpp: Call ComputeBounds before invalidating on Background
31630 changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
31632 2007-10-01 Rolf Bjarne Kvinge <RKvinge@novell.com>
31634 * fullscreen.h, fullscreen.xaml: Added.
31635 * text.h: Make GetActualHeight and GetActualWidth public.
31636 * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
31637 objects now: the fullscreen message and the toplevle canvas),
31638 SetSourceLocation and Show/HideFullScreenMessage.
31639 * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
31640 Surface::GetTopLevel.
31642 2007-09-30 Zoltan Varga <vargaz@gmail.com>
31644 * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
31647 * text.cpp (text_destroy): Avoid crash if default_foreground_brush
31650 2007-09-28 Chris Toshok <toshok@ximian.com>
31652 * Makefile.am: remove the XRANDR conditional here. it's #defined
31655 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31657 * font.cpp (CreatePattern): If a filename has been specified for
31658 loading a font, don't set family values. Also, call
31659 FcDefaultSubstitute() on the pattern before trying to find a
31662 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31664 Optimization hack that saves time by not recalculating the layout
31665 when the foreground brush changes (since we'd have exactly the
31668 * font.cpp (TextRun): Now takes the address of the brush than the
31669 brush itself, so that when brushes change on the Inline, we get
31670 the brush change for free.
31672 * text.cpp (LayoutSilverlight): Pass the addresses of the
31673 foreground brushes to TextRun ctor and don't bother with the
31674 default foreground brush here, save that for ::Paint-time.
31675 (LayoutPango): Same idea as LayoutSilverlight().
31676 (Paint): Get the default foreground and pass that off to the
31677 pango/silverlight text renderers.
31678 (OnPropertyChanged): Don't force a re-layout if the property that
31679 changed was the TextBlock::ForegroundProperty.
31680 (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
31682 * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
31683 argument so that we don't have to specify it in the creation of
31684 our layout attributes (this saving us a re-layout when a brush
31686 (mango_attr_foreground_new): Now takes the address of the brush
31687 rather than the brush itself, so that when brushes change on the
31688 Inline, we get the brush change for free.
31690 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31692 * text.cpp (TextBlock): We cannot re-use the
31693 default_foreground_brush here because we cannot allow it to be
31694 altered in any way.
31696 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31698 * font.cpp (TextFont::IsScalable): New method.
31699 (TextFont::Path): Paths a glyph but does not stroke or fill. Only
31700 available if the font is scalable.
31701 (TextLayout::Render): Cache each segment's cairo_path_t so that
31702 future renders do not have to do it on a glyph-by-glyph basis
31703 (avoids possible glyph cache misses). May also save time by doing
31704 a single fill rather than a fill per glyph.
31706 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31708 * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
31710 (RenderGlyphPath): Same.
31711 (UnderlinePosition): New method.
31712 (UnderlineThickness): New method.
31713 (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
31716 2007-09-28 Jeffrey Stedfast <fejj@novell.com>
31718 * text.cpp (LayoutSilverlight): LineBreaks don't really care about
31719 TextDecorations or Foreground properties.
31721 * font.cpp (TextRun::~TextRun): unref the font.
31722 (TextSegment): now references the original TextRun instead of
31723 copying pointers/values.
31724 (TextLayout::Render): Updated for above change.
31726 2007-09-28 Zoltan Varga <vargaz@gmail.com>
31728 * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
31730 (LoadCode): Change return type to bool to indicate a loading error.
31732 2007-09-28 Jeffrey Stedfast <fejj@gnome.org>
31734 * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
31735 (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
31736 false, then it signifies MediaEnded, no need to explicitly check.
31737 (MediaElement::SetSource): Delete the current source here.
31738 (MediaElement::~MediaElement): C++ `delete' operator doesn't
31739 handle freeing NULL pointers.
31740 (MediaElement::DownloaderComplete): No need to delete the source
31741 here, done in SetSource() instead.
31743 * font.cpp: Created my own GlyphMetrics struct which uses doubles
31744 instead of ints for more accurate layout/rendering calculations.
31745 (Layout): When comparing to max_width, add 1.0 to account for
31746 rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
31747 width/height values for the same reason.
31749 2007-09-28 Sebastien Pouliot <sebastien@ximian.com>
31751 * xaml.cpp: Free locally allocated Points inside get_point_array.
31753 2007-09-28 Jeffrey Stedfast <fejj@gnome.org>
31755 * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
31758 2007-09-28 Sebastien Pouliot <sebastien@ximian.com>
31760 * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
31761 thickness == 0 optimization.
31763 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
31765 * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
31768 * text.cpp: Merged with custom text layout code - layout algorithm
31769 is chosen at runtime_init() via flags or environment variable.
31771 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
31773 * runtime.cpp (runtime_init): Don't check pango version info,
31774 we're just gonna statically link in pango (and/or do
31775 configure-time checks if the user decides to link to a system
31776 pango). Implemented some preliminary environment variable parsing
31777 action to decide if the user wnts to use ffmpeg vs ms codecs,
31778 pango vs my "silverlight" text layout engine, etc.
31780 2007-09-27 Jeffrey Stedfast <fejj@novell.com>
31782 * runtime.cpp (runtime_init): Now takes a flags argument for
31783 enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
31784 then make sure pango is recent enough (if not, print a warning
31785 akin to the cairo warning).
31787 2007-09-27 Sebastien Pouliot <sebastien@ximian.com>
31789 * array.cpp: Fix issues on double parsing, including bug #328915 and
31790 test cases in /moon/test/xaml/points-torture.xaml
31792 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31794 * animation.cpp: Add a few null checks.
31796 2007-09-27 Larry Ewing <lewing@novell.com>
31798 * media.cpp: Don't mark our download progress as 100% until we've
31799 been notified by the downloader that it is complete. Some
31800 programs check download progress to decide when they can safely
31801 poke at the media element properties.
31802 * downloader.cpp: set the final downloader progress to 1.0 not 100.
31804 2007-09-27 Sebastien Pouliot <sebastien@ximian.com>
31806 * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first
31807 line. Fix bug #328907.
31809 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31811 * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
31812 change InitializeFromXaml to take a XamlLoader argument.
31814 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31816 * xaml.cpp: More unrefs.
31818 2007-09-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
31820 * text.cpp: Unref a few newly created objects.
31821 * control.cpp: Remove an unnecessary ref.
31823 2007-09-26 Zoltan Varga <vargaz@gmail.com>
31825 * text.cpp (SetValue): Implement proper handling of the Text property.
31827 (OnPropertyChanged): Force a relayout when the foreground property changes.
31828 (Layout): Remove the laying out of the contents of the Text property, since the
31829 text is now contained in the first inline.
31831 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
31833 * font.cpp (Layout): Include the space char on the line before
31834 wrapping, this is noticable when TextDecorations="Underline" is
31836 (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
31837 (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
31838 (TextFont::Render): Implemented.
31840 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
31842 * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
31843 (and was removed elsewhere, except here);
31845 2007-09-26 Chris Toshok <toshok@ximian.com>
31847 * clock.cpp (TimeManager::Tick): a few changes. first and
31848 foremost, fix the signs on the FPS_ADJUSTMENTS. oops. also, add
31849 a buffer of 50ms on either side of the timeout before we consider
31850 the Tick either slow or fast. Increase the number of out-of-line
31851 ticks we need and decrease the fps adjustment.
31853 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
31855 * text.cpp (OnCollectionChanged): Needs to call Invalidate().
31857 2007-09-26 Chris Toshok <toshok@ximian.com>
31859 * clock.cpp: initialize the min_timeout based on a good default
31860 max fps (60 in our case). Also, calculate the fps adjustments in
31863 * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
31864 it's handled by TimeManager's default.
31866 2007-09-26 Jeffrey Stedfast <fejj@novell.com>
31868 * font.cpp: A bunch of fixes/changes to mimic Microsoft's
31869 Silverlight TextBlock layout logic.
31871 2007-09-26 Andrew Jorgensen <ajorgensen@novell.com>
31873 * Makefile.am: Added missing files for dist tarball
31875 2007-09-26 Chris Toshok <toshok@ximian.com>
31877 * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
31878 we just adjust fps by a fixed amount (4fps) either up or down, if
31879 a certain number (5, by default) of ticks in a row take either
31880 less or more time to complete (respectively), than the current
31883 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
31885 * moon-path.c: Fix typos.
31886 * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
31888 2007-09-26 Sebastien Pouliot <sebastien@ximian.com>
31890 * shape.h|cpp: Remove Line (direct path manipulation) hack.
31892 2007-09-26 Rolf Bjarne Kvinge <RKvinge@novell.com>
31894 * xaml.cpp: Unref collections and matrix transforms we create.
31896 2007-09-25 Sebastien Pouliot <sebastien@ximian.com>
31898 * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo
31901 2007-09-26 Zoltan Varga <vargaz@gmail.com>
31903 * text.cpp (TextBlock): Set an empty string as a default Text property.
31904 (InsideObject): Implement this for text blocks.
31906 2007-09-25 Sebastien Pouliot <sebastien@ximian.com>
31908 * font.cpp: Fix warning.
31910 2007-09-25 Larry Ewing <lewing@novell.com>
31912 * brush.cpp|h: add image_brush_create_similar to simplify creating
31913 similar surfaces. Use it where appropriate.
31915 * media.ccp: use image_brush_create_similar where possible. In
31916 MediaElement::Render draw with opacity directly rather than
31917 creating a temporary surface for every frame. Rework image opacity
31918 cache so that we don't have to recreate the surface every time.
31920 2007-09-25 Jb Evain <jbevain@novell.com>
31922 * media.cpp|h: let the MediaElement be the only one to trigger
31923 its own events, terminate its friendship with MediaBase.
31925 2007-09-25 Jb Evain <jbevain@novell.com>
31927 * playlist.cpp|h: trigger a parsing error when no href attribute
31928 is found for base and ref elements.
31930 2007-09-25 Jb Evain <jbevain@novell.com>
31932 * playlist.cpp|h, media.cpp: Auto play for playlists.
31934 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
31936 * font.cpp (Render): Fixed some y1 offset logic that didn't amke
31937 any sense (and was wrong afaict anyway). We now render exactly
31938 like Microsoft Silverlight.
31940 2007-09-24 Jb Evain <jbevain@novell.com>
31942 * playlist.cpp: close the previous source before playing
31945 2007-09-24 Jb Evain <jbevain@novell.com>
31947 * mplayer.cpp: on Close, reset height and width to zero.
31949 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
31951 * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
31952 either the NaturalWidth or NaturalHeight changes.
31954 2007-09-24 Jb Evain <jbevain@novell.com>
31956 * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
31957 only a SingleMedia deals with the MediaPlay directly. A playlist
31958 being a collection of either other playlist or singlemedias,
31959 playing one at a time.
31961 2007-09-24 Jb Evain <jbevain@novell.com>
31963 * media.cpp, playlist.cpp: let the Media Sources change
31964 the state of the MediaElement (Playing/Paused/Stopped).
31966 2007-09-24 Jb Evain <jbevain@novell.com>
31968 * media.h: let the media source change the properties
31969 of the media element. Make MediaSource friend of MediaElement
31971 * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
31973 2007-09-24 Jeffrey Stedfast <fejj@novell.com>
31975 * font.cpp: Added kerning.
31977 * mplayer.cpp: Added mutex locking for the target_pts variable.
31979 2007-09-24 Jb Evain <jbevain@novell.com>
31981 * playlist.cpp: Playlist::IsPlaylistFile: return false
31984 2007-09-23 Jb Evain <jbevain@novell.com>
31986 * playlist.cpp: A base element stores the base in
31987 a href attribute, not in its body.
31989 2007-09-22 Chris Toshok <toshok@ximian.com>
31991 * Makefile.am (USE_XRANDR): define USE_XRANDR.
31993 * runtime.cpp (Surface::realized_callback): get the RANDR screen
31994 config info, and set the TimeManager's max refresh to match the
31997 * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
32000 2007-09-22 Zoltan Varga <vargaz@gmail.com>
32002 * xaml.h xaml.cpp: Add support for parsing x:Code elements and
32003 passing them to managed code.
32005 2007-09-21 Jeffrey Stedfast <fejj@gnome.org>
32007 * mplayer.cpp (audio_play): Slightly optimized the volume
32010 * font.cpp (Layout): Keep track of the line ascend and pad our
32011 extents with an extra pixel on all sides to account for hinting.
32012 (Render): Starts rendering glyphs 1 pixel in. Also modified the
32013 logic such that we didn't have to treat path/bitmap glyphs
32016 2007-09-21 Jeffrey Stedfast <fejj@novell.com>
32018 * font.cpp: Now handles scalable fonts by rendering their outline
32019 paths rather than rendering bitmaps.
32021 * moon-path.c (moon_path_move_to): Resize the path auto-magically
32022 if we don't have enough room. Same for all of the other
32023 line_to/curve_to/etc.
32025 2007-09-21 Jeffrey Stedfast <fejj@gnome.org>
32027 * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
32028 the old width extents).
32029 (Layout): When breaking a long line, the new line height should
32030 not be set to 0 (duh), it should be set to the font height.
32032 2007-09-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
32034 * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
32035 the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
32036 managed code to set them. Keep track of mappings in native code, call
32037 into managed code only if a mapping is not found here. Keep a list of
32038 missing assemblies, allows managed code to request downloading of
32039 several assemblies before trying to parse xaml again. Added
32040 XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
32041 successful (and only then), requests a vm to be loaded, before calling
32042 into managed code to actually create the managed object.
32044 2007-09-20 Chris Toshok <toshok@ximian.com>
32046 * type.cpp, type.cpp.in (types_init_register_events): register the
32047 LostFocus/GotFocus events.
32049 * uielement.h: add LostFocusEvent/GotFocusEvent.
32051 * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
32053 2007-09-20 Jeffrey Stedfast <fejj@gnome.org>
32055 * text.cpp (InsideObject): Removed.
32057 * font.cpp (Layout): Add the horiBearingX value of the last glyph
32058 in each line to the width of said line.
32059 (RenderGlyphBitmap): Cache the surface and use it as a mask when
32060 filling so that the true source pattern shows thru.
32062 2007-09-20 Jeffrey Stedfast <fejj@novell.com>
32064 * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
32066 (mango_renderer_show_layout): Instead of having pango render the
32067 text, do it ourselves using our cached paths from the previous
32068 call to mango_renderer_layout_path().
32069 (mango_renderer_layout_path): Clear our cache paths.
32071 2007-09-20 Jeffrey Stedfast <fejj@novell.com>
32073 * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
32074 foreground changes.
32075 (OnSubPropertyChanged): Same.
32077 * font.cpp (GetFont): No longer need to pass the size to
32079 (TextFont::Load): No longer needs the size argument.
32080 (TextFont::.ctor): We just get the size from the pattern now.
32081 (TextFontDescription::CreatePattern): Call FcFontMatch() on our
32082 generated font pattern here instead of having our lower-level
32083 TextFont::.ctor do it.
32084 (TextFont::Ascender): Use the size metrics so that this always
32085 works properly (at least it seems to).
32086 (TextFont::Height): Same.
32087 (TextLayout::Layout): Changed line-height logic a bit for
32090 2007-09-20 Chris Toshok <toshok@ximian.com>
32092 * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
32093 type event hashes as well if we don't find it in ours.
32095 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
32097 * brush.cpp: Implemented MappingMode for LinearGradientBrush.
32098 Buttons from Dr Popper are now rendered correctly.
32100 2007-09-20 Chris Toshok <toshok@ximian.com>
32102 * typegen.cs (GenerateTypeCpp): add a call to
32103 types_init_register_events.
32105 * type.h.in, type.cpp.in: add Type::RegisterEvent,
32106 Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
32108 * type.cpp.in: add types_init_register_events, which registers all
32109 the events we care about for all the types. we do it here to
32110 guarantee that events have been registered by the time any
32111 instance code is run for any type.
32113 * dependencyobject.h, dependencyobject.cpp: remove the event
32114 registration from EventObject, it's moving to Type. so the Type
32115 will contain the name to id hash, and the EventObject will only
32116 contain an array of GSLists, where the index into that array is
32119 * clock.cpp (clock_init): lookup the static events here.
32121 * runtime.cpp (runtime_init): same.
32123 * animation.cpp (animation_init): same.
32125 * downloader.cpp (downloader_init): same.
32127 * uielement.cpp (uielement_init): same.
32129 * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
32130 src/type.h, src/runtime.h, src/downloader.h: events are static to
32131 the classes now, instead of being per-instance.
32133 * src/types.h src/types.cpp: regen.
32135 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
32137 * geometry.cpp: Avoid re-allocating path memory when possible.
32138 * moon-path.c|h: Added documentation and new moon_path_renew and
32139 moon_path_clear functions to reduce memory re-allocations.
32140 * shape.cpp|h: Avoid re-allocating path memory when possible.
32142 2007-09-20 Sebastien Pouliot <sebastien@ximian.com>
32144 * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
32145 Bubbles from bubblemark.com are now rendered correctly.
32147 2007-09-19 Sebastien Pouliot <sebastien@ximian.com>
32149 * shape.cpp|h: Remove dead code.
32151 2007-09-19 Jeffrey Stedfast <fejj@novell.com>
32153 * font.cpp: More fixes to make stuff build/work (more or less).
32155 * text.patch: Patch to make text layout/rendering use my new code
32158 2007-09-19 Chris Toshok <toshok@ximian.com>
32160 * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
32162 2007-09-19 Sebastien Pouliot <sebastien@ximian.com>
32164 * moon-path.c|h: New. Create simple or complex paths without a
32165 (expensive) cairo_context_t using an API similar to cairo.
32166 * geometry.cpp|h: Use moon_path functions. Added (still inactive)
32167 code to compute bounds for paths.
32168 * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API
32169 for Polylines and Polygons. Still not perfect for large thickness
32170 and steep angles but 8-10x faster and better (no artifact left)
32171 than previous code, see new xaml animation tests).
32172 * rsvg.cpp|h: Adapt to use moon-path functions.
32173 * Makefile.am: Add moon-path.c and moon-path.h to the build.
32175 2007-09-19 Jeffrey Stedfast <fejj@gnome.org>
32177 * font.cpp: More hackery.
32179 2007-09-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
32181 * panel.cpp: Add a null check.
32182 * xaml.cpp: Created a list that contains most created elements in order to
32183 unref them once parsing is finished (we need to unref all created
32184 elements except the top one, but the parser callback functions don't
32185 know which is the top one, so we delay the unrefing until the end). If
32186 parsing is done manually (*_from_str, etc), just use unref.
32187 * text.h, text.cpp: Add text_destroy to properly destroy the default
32188 foreground brush on shutdown.
32189 * clock.cpp: When we allocate a clock, unref it after adding it to the
32191 * collection.h: Store the parent in the Node, since we can't call
32192 obj->GetParent () in a destructor (it will walk up the hierarchy using
32193 the type system, but since the parent can be in the destructor, the type
32194 system isn't reliable anymore).
32195 * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
32196 foreground brush, not to the element. Add a mango_renderer_get_type_safe
32197 that can reinitialize static variables (after a libmoon reload) from
32199 * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
32201 * collection.cpp: Store the parent in the Node, since we can't call
32202 obj->GetParent () in a destructor (it will walk up the hierarchy using
32203 the type system, but since the parent can be in the destructor itself,
32204 the type system isn't reliable anymore).
32205 * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
32206 * media.cpp: Sprinkle a few unrefs here and there.
32207 * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
32208 Add a null check in the Storyboard destructor. Use Value::CreateUnref
32209 for default values.
32210 * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
32213 2007-09-18 Jeffrey Stedfast <fejj@gnome.org>
32215 Continued fixes to go along with Rolf's other TextBlock leak
32218 * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
32219 (mango_attr_foreground_destroy): Don't unref the fg.
32221 * text.cpp (default_foreground): Make return a static reference.
32222 (Layout): Don't ref the fg.
32224 2007-09-17 Jeffrey Stedfast <fejj@gnome.org>
32226 * font.cpp: more progress on text layout.
32228 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
32230 * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
32232 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
32234 * xaml.cpp: Fix warning.
32236 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
32238 [Removed mono dependency for 1.0 moonlight applications.
32239 We now have a native [Plugin]XamlLoader that is the native counterpart of the
32240 managed Loader object, the native loader handles xaml loading when the
32241 mono runtime isn't loaded.]
32243 * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
32244 Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
32245 was necessary because the callback handler isn't given enough
32246 information (it needs to know the plugin, but this information is not
32247 passed on), and it now also avoids the potential problem of overwriting
32248 static callbacks when several plugins are created simultanously.
32249 * control.cpp, demo.cpp: Update according to API change.
32251 2007-09-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
32253 * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
32255 2007-09-14 Jeffrey Stedfast <fejj@novell.com>
32257 * font.cpp|h: New font/text rendering engine (e.g. replacement for
32258 pango). Nowhere near complete yet.
32260 2007-09-14 Miguel de Icaza <miguel@novell.com>
32262 * media.cpp (Stop, Pause): Do not dereference source if it is not
32263 yet set (TopBanana does this).
32265 2007-09-13 Jb Evain <jbevain@novell.com>
32267 * media.cpp|h, playlist.cpp|h: Work on playlist integration.
32269 2007-09-10 Jeffrey Stedfast <fejj@novell.com>
32271 * mplayer.cpp (StopThreads): When resetting current_pts and
32272 target_pts, use the audio (or video) initial_pts value rather than
32273 0 since they are meant to be absolute pts values, not
32274 relative. This fixes a bug in the halo3 site where pressing Stop
32275 would cause the current time string to become "59:55" when it
32276 should have been "00:00".
32278 * media.cpp (OnPropertyChanged): Only Invalidate() on
32279 PositionProperty changes if we have video content to render. Fixes
32282 * mplayer.cpp (HasVideo): New method that returns true if the
32283 media source has video content.
32285 2007-09-10 Jeffrey Stedfast <fejj@gnome.org>
32287 * mplayer.cpp (Duration): Only use audio duration as the defacto
32288 duration if we've got a valid pcm handle.
32290 2007-09-10 Chris Toshok <toshok@ximian.com>
32292 * animation.cpp (HookupAnimationsRecurse): make the message
32293 involving failure to hookup a property more verbose. Looks like
32294 MS is treating a TranslateTransform as a ScaleTransform in popfly
32295 - that is, they're trying to animate ScaleX on a
32296 TranslateTransform (which is oddly enough named "scale".)
32298 * media.cpp: Emit ImageFailedEvent if we failed to load the image.
32299 Remove that damn TODO printf.
32301 * media.h: add ImageFailedEvent to Image, and change signature of
32302 CreateSurface so we can return false if there's an error.
32304 * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
32306 * error.h: make these classes instead of structs, and also make
32307 them copy/free the type specific strings. it'll result in more
32308 allocations but it cleans up the code using them.
32310 2007-09-07 Sebastien Pouliot <sebastien@ximian.com>
32312 * shape.cpp: Fixed Polygon "special" case when it only has to draw
32313 a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't
32314 working) which is now 10x faster than calling ComputeBoundSlow (the
32315 working alternative). Started to reuse the same concept for Polyline
32316 and Polygon but the (#def-out) code doesn't yet handle line joins
32317 correctly (so it still use the correct ComputeBoundSlow);
32319 2007-09-06 Chris Toshok <toshok@ximian.com>
32321 * dirty.cpp (process_dirty_elements): some guards against unioning
32322 an empty rectangle.
32324 2007-09-06 Chris Toshok <toshok@ximian.com>
32326 * runtime.cpp (Surface::Invalidate): only invalidate the actual
32327 rectangle. The +1/-2 stuff is done in dirty.cpp, if it needs to
32330 * rect.h (Rect::Floor): drop fractional part of all values.
32332 * media.h,media.cpp: we cheat and turn off AA on MediaElements
32333 when they aren't rotated or skewed.
32335 * uielement.h, uielement.cpp: we need to keep track of 2
32336 dirty_rects. one for the element itself, which is GrowBy(1)'ed in
32337 dirty.cpp if the child uses AA, and one for children who have
32338 passed their invalidation rect up the tree (we don't grow this
32339 one). Also, add the default UseAA method, which returns true, and
32340 the ChildInvalidated method, which mirrors Invalidate(Rect r) but
32341 uses the children_dirt_rect.
32343 * panel.h, panel.cpp (Panel::~Panel): clear our children
32345 (Panel::FindStartingElement): the meat of the optimization hack -
32346 we determine if we can skip parts of the tree if the expose
32347 rectangle exists completely within the bounds of an opaque
32348 element, unrotated, unskewed element.
32350 * dirty.cpp (process_dirty_elements): handle
32351 item->children_dirty_rect as well as item->dirty_rect. Also, Grow
32352 the item's dirty_rect by 1 before combining them, if the item uses
32355 2007-09-05 Jb Evain <jbevain@novell.com>
32357 * playlist.cpp: the asx format is case insensitive, parse it
32360 2007-09-05 Sebastien Pouliot <sebastien@ximian.com>
32362 * animation.h: Make KeySpline::GetObjectType virtual.
32364 2007-09-05 Jb Evain <jbevain@novell.com>
32366 * playlist.cpp, playlist.h: work on playlist parsing.
32368 2007-09-05 Jb Evain <jbevain@novell.com>
32370 * xaml.h: export timespan_from_str.
32372 2007-09-05 Jb Evain <jbevain@novell.com>
32374 * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
32376 2007-09-04 Chris Toshok <toshok@ximian.com>
32378 * media.cpp (Image::Render): unref the backing pixbuf as soon as
32380 (Image::CleanupSurface): guard against double unreffing the
32383 2007-09-04 Chris Toshok <toshok@ximian.com>
32385 * xaml.cpp (xaml_set_property_from_str): delete the color.
32386 (dependency_object_set_attributes): same.
32388 2007-09-04 Chris Toshok <toshok@ximian.com>
32390 * media.cpp (Image::CreateSurface): if we need to create a new
32391 surface, make sure to unref the old one.
32393 * geometry.cpp (PathGeometry::PathGeomtry): use
32394 Value::CreateUnrefPtr (bad name, imo, but eh)
32395 (PathFigure::PathFigure): same.
32397 2007-09-04 Jb Evain <jbevain@novell.com>
32399 * playlist.h, playlist.cpp: Work on the overall design.
32401 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
32403 * brush.cpp (image_brush_create_pattern): Revert previous patch as
32404 it broke test suite.
32406 2007-09-04 Jb Evain <jbevain@novell.com>
32408 * list.h, list.cpp: add a List::ForEach method.
32410 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
32412 * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
32413 (based on lewings performance patch).
32415 2007-09-04 Sebastien Pouliot <sebastien@ximian.com>
32417 * text.h|cpp: TextBlock actual_[height|width] are already cached
32418 because they're expansive to calculate. Make sure we don't compute
32419 them until they're really required (e.g. when a lot of properties
32420 changes when loading an XAML file).
32422 2007-09-04 Chris Toshok <toshok@ximian.com>
32424 * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
32425 keyframes in reverse order so the sort works.
32427 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
32429 * list.cpp (Insert): Fixed.
32431 * runtime.cpp (render_cb): Added some "FPS" debug spew.
32433 * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
32434 timeout id, by returning false, it is removed for us.
32436 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
32438 * media.cpp: fix memory leaks and crashes when a download gets
32441 2007-09-04 Jeffrey Stedfast <fejj@novell.com>
32443 * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
32444 as that seems to be what ffmpeg uses internally. Also added a new
32445 'eof' state so that we can easily tell if we've reached the end of
32446 the media stream (eof is true and no packets queued).
32448 2007-09-04 Rolf Bjarne Kvinge <RKvinge@novell.com>
32450 * media.h, media.cpp: If we get a play request before the media is loaded,
32451 save the request and start playing when the media is loaded. Hopefully
32452 this is what MS is doing.
32454 2007-09-04 Jeffrey Stedfast <fejj@gnome.org>
32456 * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
32457 than comparing the Length() to 0.
32459 * list.cpp: Added more tests.
32461 2007-09-03 Sebastien Pouliot <sebastien@ximian.com>
32463 * rect.cpp: Safer IsEmpty (handles negative values)
32464 * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
32465 empty bounds. In Shape::DoDraw avoid call to cairo_set_matrix if
32468 2007-09-03 Sebastien Pouliot <sebastien@ximian.com>
32470 * media.cpp: Fix premul and remove confusing macro.
32472 2007-09-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
32474 * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
32475 canvas.cpp, namescope.cpp: Plug some leaks.
32476 * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
32477 * dependencyobject.cpp: free_attachee: unref the contained dob. Use
32478 base_unref () instead of accessing the pointer in a few places to allow
32480 * debug.cpp: get_stack_trace is now able to get meaningful data for managed
32481 parts of the stack trace as well.
32483 2007-09-03 Rolf Bjarne Kvinge <RKvinge@novell.com>
32485 * list.cpp: List::Unlink: Link my neighbours to eachother.
32487 2007-09-01 Sebastien Pouliot <sebastien@ximian.com>
32489 * rect.cpp: Fix union with empty rectangles (so x and y are not
32490 assigned to 0 resulting in large bounds). Fix IsEmpty.
32491 * shape.cpp: Fix possible division by 0, resulting in infinite
32492 values (and much too large bounds)
32494 2007-08-31 Jeffrey Stedfast <fejj@novell.com>
32496 *.cpp: Updated for the slightly different List API (list nodes no
32497 longer have Next() or Prev() methods, just access the pointers
32500 * animation.cpp: Made sorted_list a GPtrArray and updated to use
32501 g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
32502 sorted_list) accesses assumed nodes were of type KeyFrameNode,
32503 which they were not. Fixed.
32505 * xaml.cpp: Made XamlElementInstance.dtor virtual.
32507 * collection.h: Made the Collection::Node.dtor virtual.
32509 * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
32510 can no longer guarantee that List::Node->next will have the same
32511 address as the List::Node object and so the list implementation
32512 broke. This rewrite is a bit less fancy, but doesn't rely on that
32515 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
32517 * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy
32518 doesn't change the current rectangle (but returns a new one).
32519 However everything seems to work, so they are probably not needed.
32521 2007-08-31 Jeffrey Stedfast <fejj@novell.com>
32523 * text.cpp (OnPropertyChanged): Need to Invalidate() too.
32525 2007-08-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
32527 * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
32528 now reference either the fullscreen drawing area or the normal drawing
32529 area. Refactored drawing area initialization and destruction into
32530 seperate methods. Modified ConnectEvent to be able to specify whether
32531 the drawing area should attach to realize/unrealize events (fullscreen
32532 drawing area shouldn't). Only emit ResizeEvent if we're not in
32533 fullscreen mode. Added normal_height/width, contains the size of the
32534 surface when not in fullscreen (as opposed to screen_height/width for
32535 fullscreen mode). Height/width now contains the actual size of the area
32536 where we draw, whether in fullscreen mode or not.
32538 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
32540 * shape.cpp: #ifdef out an optimization that doesn't work with
32541 ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
32542 wouldn't render at all with it's fill brush). Added same shortcut
32543 (as before) for Shape::ComputeBoundsSlow.
32545 2007-08-31 Sebastien Pouliot <sebastien@ximian.com>
32547 * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
32548 are known to be empty (UIElement::SHAPE_EMPTY).
32550 2007-08-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
32552 * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
32553 apparently a point is inside a shape unregarding to whether it's filled
32554 or not, unlike geometries.
32556 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
32558 * shape.cpp: Better degenerate handling for round-rectangles and
32561 2007-08-30 Chris Toshok <toshok@ximian.com>
32563 * collection.h, collection.cpp: change the prototype of
32564 Collection::Add, ::Insert, and ::SetVal to return bool. Make the
32565 subclasses check the return value before doing their type specific
32566 handling of the child. Fixes the crash from invalid xaml in
32569 * animation.h, animation.cpp: track collection api change.
32571 2007-08-30 Chris Toshok <toshok@ximian.com>
32573 * collection.cpp (Collection::Add): make the warning a lot more
32574 useful if the child isn't of the right type.
32576 2007-08-30 Rolf Bjarne Kvinge <RKvinge@novell.com>
32578 * xaml.cpp: Unref the namescope.
32579 * debug.h, debug.cpp: Added. Implemented get_stack_trace and
32581 * clock.cpp: Unref the _instance.
32582 * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
32583 debug purposes. It's able to log to console object creation,
32584 destruction, ref/unrefs with a stacktrace with C++ unmangled function
32585 names, file and line number. Keep a count of created and destroyed
32586 objects, and a list of objects still alive. Ref and unref attached
32587 objects, and free the attachees when we're deleted.
32588 * animation.h, animation.cpp: Add animation_destroy, and destroy the default
32589 dependency property for a few properties.
32590 * type.cpp, type.cpp.in: Initialize Type::types to NULL.
32591 * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
32592 types. Call animation_destroy on shutdown, and add some object tracking
32593 output to runtime_init and runtime_shutdown.
32594 * Makefile.am: Added debug.*.
32596 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
32598 * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored
32601 2007-08-30 Jeffrey Stedfast <fejj@novell.com>
32603 * mplayer.cpp (AdvanceFrame): If there is no video stream, return
32604 based on audio state. Also, if current_pts >= target_pts already,
32605 return true rather than false to pretend we advanced a frame (it's
32606 really not that important to our caller, all the value is used for
32607 is updating position).
32609 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
32611 * shape.cpp: Handle negative values for Height and Width (not
32612 drawn) and for Radius[X|Y] (absolute values).
32614 2007-08-30 Jb Evain <jbevain@novell.com>
32616 * media.h, media.cpp: introduce a new MediaSource class that a
32617 MediaElement uses, so we can have either a SingleMedia or a Playlist
32619 * playlist.cpp, playlist.h: added
32620 * Makefile.am: add the previous files.
32622 2007-08-30 Sebastien Pouliot <sebastien@ximian.com>
32624 * shape.cpp: Fix small rectangle fills when no stroke brush is
32627 2007-08-29 Jeffrey Stedfast <fejj@novell.com>
32629 * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
32630 bounds on TextProperty change explicitly, it should already be
32631 recalculated later in the function in the same place it gets
32632 reclauclated for other property changes.
32633 (ComputeBounds): Updated to work the same as the rest of the
32636 2007-08-29 Sebastien Pouliot <sebastien@ximian.com>
32638 * shape.cpp: Fix ComputeBoundsFast to consider the stroke
32641 2007-08-29 Sebastien Pouliot <sebastien@ximian.com>
32643 * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify
32644 the path after we get a copy of it. Remove the now unrequired
32645 clipping inside the *::BuildPath for StretchUniformToFill.
32647 2007-08-29 Jeffrey Stedfast <fejj@novell.com>
32649 * media.cpp (Render): Cache the pattern matrix.
32650 (DownloaderComplete): Remove the assert and simply handle that
32651 case by returning (which defers the call until OnLoaded).
32653 2007-08-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
32655 * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
32656 making things consistent.
32658 2007-08-29 Chris Toshok <toshok@ximian.com>
32660 * merged delayed-rendering-branch branch to head. ChangeLog is:
32662 2007-08-28 Chris Toshok <toshok@ximian.com>
32664 * control.cpp (GetTransformFor): change this to act as
32665 Canvas::GetTransformFor does - we only put in the transform from
32666 parent to child here - don't include the parent's transform as
32667 well. Fixes the airlines demo.
32669 2007-08-28 Chris Toshok <toshok@ximian.com>
32671 * dirty.cpp (process_dirty_elements): use a different method for
32672 checking if against the toplevel canvas, and also use
32673 UIElement::parent instead of DependencyObject::GetParent() to get
32674 controls working a little better than before.
32676 * control.h, control.cpp: remove UpdateTransform. this is handled
32677 by the dirty.cpp code now.
32679 * dependencyobject.h, dependencyobject.cpp: copy over the
32680 event_object_{add,remove}_event_handler change from the trunk so
32681 we can continue to work with HEAD olive.
32683 2007-08-22 Chris Toshok <toshok@ximian.com>
32685 * uielement.cpp (Invalidate): don't actually invalidate the
32686 element unless it's visible.
32687 (OnPropertyChanged): the above change requires us to invalidate
32688 the element before setting the flags (in the case where we're
32689 hiding an element).
32691 2007-08-21 Jeffrey Stedfast <fejj@novell.com>
32693 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
32694 unless unspecified, only then should we use video width/height.
32696 2007-08-21 Chris Toshok <toshok@ximian.com>
32698 * uielement.cpp (DoRender): short-circuit rendering of uielements
32699 when their opacity is 0.
32701 * dirty.cpp (process_dirty_elements): handle controls.
32703 2007-08-21 Chris Toshok <toshok@ximian.com>
32705 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
32706 (cairo_*_extents) codepath for computing bounds. Use this path
32707 for polygons, polylines, and paths. Implement a Line-specific
32708 fast ComputeBounds.
32710 2007-08-20 Chris Toshok <toshok@ximian.com>
32712 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
32713 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
32715 2007-08-20 Chris Toshok <toshok@ximian.com>
32717 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
32719 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
32720 call, and Rect::GrowBy
32722 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
32725 2007-08-20 Chris Toshok <toshok@ximian.com>
32727 * shape.h, shape.cpp: move the ellipse bound computing to shape
32730 2007-08-29 Rolf Bjarne Kvinge <RKvinge@novell.com>
32732 * clock.h: Implement TimeManager::GetObjectType.
32733 * dependencyobject.h, dependencyobject.cpp: Move all type management down to
32734 Base (GetObjectType, Is, GetType, GetTypeName), and implement
32735 GetObjectType in the classes that don't do it already. Remove
32736 BASE_FLOATS, simplifying ref counting.
32737 * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
32738 that don't already inherit from DependencyObject.
32739 * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
32740 raises events), and implement GetObjectType.
32742 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
32744 * shape.cpp: Fix StretchUniformToFill
32746 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
32748 * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
32749 (new since refresh?) need to be multiplied with the stroke's
32752 2007-08-28 Jeffrey Stedfast <fejj@novell.com>
32754 * text.cpp (Render): Fixed the "no text to render" optimization:
32755 don't check TextBlock::TextProperty to see if we have any text to
32756 render, instead check TextBlock::layout (which will have any text
32757 from inlines as well).
32758 (OnPropertyChanged): If the TextProperty changes, recalculate the
32761 2007-08-28 Sebastien Pouliot <sebastien@ximian.com>
32763 * geometry.h: Add a Path* parameter to Draw as we need to know some
32764 stuff (e.g. stroke thickness) in order to detect degenerate cases.
32765 * geometry.cpp: Handle degenerate case for RectangleGeometry.
32766 * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path
32767 element (NULL in the case of clipping).
32768 * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
32769 class. Add GetFillRule method. Handle most cases where a large stroke
32770 thickness change the SL drawing behaviour (wrt Cairo behaviour)
32771 * uielement.h: Add flags for empty/normal/degenerate shapes
32773 2007-08-28 Rolf Bjarne Kvinge <RKvinge@novell.com>
32775 * panel.cpp: InsideObject: The point is only inside us if we have a
32776 background, otherwise we act like if we were transparent (which is what
32777 we are if we aren't painting anything inside us).
32778 * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
32779 it's closer to what it actually does.
32780 * shape.cpp: Changed implementation of Shape::CanFill to return true only if
32781 we're actually filled, and rename CanFill to IsFilled so that it's
32782 closer to what it actually does.
32784 2007-08-27 Jackson Harper <jackson@ximian.com>
32786 * dependencyobject.cpp|h: Don't return Collections when getting
32789 2007-08-27 Jeffrey Stedfast <fejj@novell.com>
32791 * mplayer.cpp (Play): Always add a timeout, even for audio-only
32792 media, so that the callback can check if the media has ended and
32793 emit the MediaEnded event.
32795 * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
32797 * mplayer.cpp (MediaEnded): New convenience function.
32799 2007-08-27 Sebastien Pouliot <sebastien@ximian.com>
32801 * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
32802 as this clear any path data in the context (see
32803 test-path-group.xaml)
32805 2007-08-27 Jeffrey Stedfast <fejj@novell.com>
32807 * mplayer.cpp (audio_play): Implement software balance/volume here
32808 rather than using the system's mixer (as that changes the
32809 balance/volume for all applications which is a bad thing). Fixes
32812 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
32814 * panel.cpp: InsideObject: only skip checking the children if the
32815 point is not in the clipped area.
32817 * uielement.h, uielement.cpp: Added InsideClip, and moved the
32818 corresponding code from InsideObject to InsideClip.
32820 2007-08-27 Sebastien Pouliot <sebastien@ximian.com>
32822 * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
32823 tests/xaml/test-path-smoothquadraticbezier.xaml
32825 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
32827 * uielement.h, uielement.cpp: Implement InsideObject here too, the same
32828 implementation as Shape has (for our Clip property).
32829 * frameworkelement.cpp: InsideObject: call new base implementation as well.
32830 * panel.cpp: InsideObject: don't check our children, the mouse may be over
32831 them, but they're not visible for some reason (the parent object might
32834 2007-08-27 Rolf Bjarne Kvinge <RKvinge@novell.com>
32836 * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
32837 motion event even though the mouse isn't over us.
32838 * runtime.h: Add a public Surface::GetCapturedElement.
32840 2007-08-24 Jeffrey Stedfast <fejj@novell.com>
32842 * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
32843 video frames will update if we seek backwards.
32845 * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
32847 * media.cpp (UpdateProgress): Use the downloader progress value as
32848 the buffering progress value as well (since we don't yet stream).
32849 (DownloaderComplete): Call UpdateProgres() here so that we can
32850 flush the 100% progress value.
32852 * downloader.cpp (Write): Update the progress first, so that the
32853 writer callback can query the actual progress (all data read up to
32854 and /including/ this point in time).
32855 (NotifyFinished): Set progress to 100% and emit an event.
32857 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32859 * value.h[.in]: Added AsNPObj.
32860 * type.cpp[.in]: Initialize Type::NPOBJ correctly.
32862 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32864 * media.cpp: (DownloaderCompleted): The initial state of media
32865 elements that aren't autoplayed is 'Paused'.
32867 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32869 * media.cpp (MediaElement): Initialize 'loaded' to false.
32870 (SetSource): Don't call DownloaderComplete() if we haven't been
32872 (GetValue): Convert to position from ms to TimeSpan ticks.
32873 (OnLoaded): Set loaded to true and, if we have a downloader which
32874 has completed the download, call DownloaderComplete() which will
32875 then open the media file and autoplay if appropriate.
32876 (OnPropertyChanged): Protect against creating a downloader for an
32879 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32881 * media.cpp (DownloaderComplete): If we fail to open, emit the
32882 MediaFailedEvent and set some default values.
32883 (OnPropertyChanged): Don't StopLoader() here, do that all in
32884 SetSource (since SetSource needs to do it anyway).
32885 (SetSource): Call StopLoader() here and close the MediaPlayer,
32888 2007-08-23 Jackson Harper <jackson@ximian.com>
32890 * runtime.cpp|h: Make Resize use our event system (so the plugin
32892 * dependencyobject.cpp|h: Rename the add/remove handler functions
32893 to not require dependencyobjects.
32895 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32897 * media.cpp (OnPropertyChanged): Don't autoplay here.
32898 (advance_frame): Do ms->TimeSpan conversion here, too.
32899 (DownloaderComplete): Instead of calling ::Pause(), just set the
32900 pause state since the MediaPlayer already starts out in paused
32903 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32905 * clock.h: Add defines and methods to convert between timespans and
32907 * media.cpp: Create a default (empty) Markers collection. When setting
32908 MediaPlayer time values, convert between ticks (in TimeSpans) and
32909 milliseconds (which is what MediaPlayer expects). Emit MediaOpened
32910 when we're finished downloading a media, and if we're not autoplaying
32911 it, we're pausing it. Update uses of Value (gint64) constructors.
32912 * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a
32913 Value (gint64, Type::Kind) constructor to avoid mixups between
32914 INT64 and TIMESPAN values. Check for null before unref'ing a
32916 * xaml.cpp: Update uses of Value (gint64) constructors.
32918 2007-08-23 Rolf Bjarne Kvinge <RKvinge@novell.com>
32920 * type.[cpp|h].in: Add const's here that were only added manually
32921 to the generated files.
32923 2007-08-23 Jeffrey Stedfast <fejj@novell.com>
32925 * mplayer.cpp: Implemented volume/balance
32927 2007-08-23 Sebastien Pouliot <sebastien@ximian.com>
32929 * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
32930 code in Polygon::Draw.
32932 2007-08-22 Chris Toshok <toshok@ximian.com>
32934 * clock.cpp (Tick): guard against division by zero. gets
32935 "monotone" displaying.
32937 2007-08-22 Sebastien Pouliot <sebastien@ximian.com>
32939 * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them
32940 from Rectangle and Ellipse. Monotone requires that on Path and I can't
32941 recall the reason I made this (while all the test cases I made still
32944 2007-08-22 Jeffrey Stedfast <fejj@novell.com>
32946 * mplayer.cpp (MediaPlayer): Init mixer variables.
32948 2007-08-22 Jeffrey Stedfast <fejj@novell.com>
32950 * media.cpp (advance_frame): Don't bother invalidating here, we'll
32951 do that in OnPropertyChanged() for the PositionProperty.
32952 (OnPropertyChanged): Invalidate if Position has changed and
32953 opacity > 0.0f (and we actually have video).
32954 (ComputeBounds): Use the FrameworkElement width/height if set.
32955 (GetTransformOrigin): Same.
32957 2007-08-21 Jeffrey Stedfast <fejj@novell.com>
32959 * mplayer.cpp (Open): Merged both Open() implementations into a
32960 single one. We no longer use Open() without passing a uri (since
32961 Stop() has been implemented in a better way).
32962 (AdvanceFrame): Keep track of our current pts so that we won't get
32963 ahead of the audio if called too often.
32965 2007-08-20 Chris Toshok <toshok@ximian.com>
32967 * rect.cpp (bounding_rect_for_transformed_rect): oops, got
32968 MAX2/MIN2 mixed up.
32970 2007-08-20 Chris Toshok <toshok@ximian.com>
32972 * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
32973 name, I know, but we need this functionality. it's not enough to
32974 use UL and LR corners of the rectangle when computing the bounding
32975 rect for a transformed rectangle. we have to test all 4 points.
32977 * panel.cpp (ComputeBounds): use
32978 bounding_rect_for_transformed_rect.
32980 2007-08-17 Chris Toshok <toshok@ximian.com>
32982 * dependencyobject.cpp (strcase_equal, strcase_hash): new case
32983 insensitive hash functions.
32984 (RegisterFull): the property hash tables (per type, used for
32985 GetDependencyProperty) need to be case insensitive.
32987 2007-08-17 Chris Toshok <toshok@ximian.com>
32989 * xaml.cpp: remove Hidden from the visibility_map.
32990 (enum_from_str): if we don't see a name we recognize, try to parse
32991 it as a number. This could maybe be someplace else.
32993 * enums.h: remove VisibilityHidden
32995 * uielement.h, uielement.cpp: remove
32996 VisibilityHidden/LAYOUT_VISIBLE
32998 * control.h: remove GetLayoutVisible.
33000 * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
33001 item->GetVisible, since there's no need to distinguish between the
33004 2007-08-17 Jackson Harper <jackson@ximian.com>
33006 * clock.h: Add ToSeconds utility functions.
33008 2007-08-16 Jeffrey Stedfast <fejj@novell.com>
33010 * list.cpp (InsertSorted): For the stable evrsion, work backwards
33011 instead of forwards (improves performance in the typical case,
33012 altho we aren't gonna sue this feature anymore - z-sorted lists
33013 will now be GPtrArrays).
33015 * garray-ext.cpp|h: New src file containing an extension to
33016 GPtrArray for inserting an item into a presorted array.
33018 * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
33019 updated all usages of it.
33021 * panel.cpp (Render): Updated now that z_sorted is an array
33022 instead of a linked list.
33024 2007-08-16 Jackson Harper <jackson@ximian.com>
33026 * xaml.cpp: Transforms can be set as attributes, they are just a
33027 matrix in string form, that become a MatrixTransform on the
33029 - Made the debug a little nicer
33031 2007-08-15 Jackson Harper <jackson@ximian.com>
33033 * xaml.cpp: Since the callback setting is now a once per a domain
33034 thing, we don't want to check if they are already set. The 'are
33035 they already set' check only worked when we were setting them at
33036 the beginning of each parsing attempt. With our current setup it
33037 was causing everything to get loaded in the same domain.
33039 2007-08-13 Jeffrey Stedfast <fejj@novell.com>
33041 * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
33042 segfault if there are no packets in the queue.
33044 2007-08-13 Chris Toshok <toshok@ximian.com>
33046 * animation.cpp (*KeyFrame::InterpolateValue): for all the
33047 keyframes, if we don't have a Value defined, don't bother
33048 interpolating anything, just return baseValue.
33050 2007-08-13 Chris Toshok <toshok@ximian.com>
33052 * collection.cpp: fix merging/unmerging of child namescopes.
33054 * namescope.h, namescope.cpp: add a flag (merged) and a list of
33055 child merged namescopes which are searched any time this namescope
33056 is searched. Reimplement merge as list->Append, and unmerge as
33059 * dependencyobject.h: add ClearValue, and make GetParent
33062 * dependencyobject.cpp: add impl for ClearValue, and remove
33063 GetParent. Also, when finding a name we only check non-merged
33064 namescopes. The merged ones in the hieararchy will be checked as
33065 the children of the non-merged ones. Given that the set of names
33066 in merged scopes can't overlap, I'm not strictly sure this is
33067 necessary, except to reproduce Silverlight's faulty lookups after
33070 2007-08-10 Jeffrey Stedfast <fejj@novell.com>
33072 * collection.cpp (Clear): Unregister the object names.
33074 * dependencyobject.h (GetName): uhh... just return the value, lets
33075 not go returning "(null)" in string form.
33077 2007-08-10 Chris Toshok <toshok@ximian.com>
33079 * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
33080 to the silverlight Key and call s->toplevel->HandleKeyDown.
33081 (key_release_callback): same.
33082 (gdk_keyval_to_key): new function, to map between gdk and
33085 * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
33086 just package up the args into a structure and Emit the event.
33088 * enums.h: add the Key enum from the silverlight docs.
33090 2007-08-10 Jeffrey Stedfast <fejj@novell.com>
33092 * dependencyobject.cpp (resolve_property_path): Keep track of the
33093 last '.' so that when we go to get the DependencyProperty, we can
33094 pass the property name component rather than the full path of the
33095 property name. Fixes the color fades in Monotone.
33097 2007-08-09 Chris Toshok <toshok@ximian.com>
33099 * animation.h, animation.cpp: if any keyframe's keytime changes,
33100 we need to re-resolve the collection.
33102 2007-08-09 Jeffrey Stedfast <fejj@novell.com>
33104 * mplayer.cpp (Play): Only start up the io/audio threads if we
33105 aren't simply paused (e.g. if they are already alive).
33106 (IsPlaying): Return true only if playing && !paused.
33107 (audio_loop): Changed the locking logic to lock outside of the
33108 loop rather than inside. We now only release the lock inside the
33109 loop if/when the paused state changes.
33111 2007-08-08 Chris Toshok <toshok@ximian.com>
33113 * animation.h: sprinkle Resolve() methods and resolved flags
33116 * animation.cpp (Storyboard::HookupAnimationsRecurse): call
33117 Resolve() on the animation as we recurse.
33118 (KeyFrameNodeComparer): compare using the keyframe's resolved
33120 (KeyFrameNodeFinder): nuke.
33121 (KeyFrameCollection::Add): just mark the collection as needing to
33122 be resolved. don't muck with the sorted list here.
33123 (KeyFrameCollection::Insert): same.
33124 (KeyFrameCollection::Remove): same.
33125 (KeyFrameCollection::Clear): also mark the collection as
33127 (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
33128 (KeyFrameAnimation_ResolveKeyFrames): implement most of the
33129 algorithm posted at
33130 http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
33131 keytimes of different types. this is all untested, unfortunately,
33132 as I can't get non-TimeSpan keytimes to work on SL.
33133 (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
33135 (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
33136 the key frames before using sorted_list.
33137 (*AnimationUsingKeyFrames::Resolve): override the empty
33138 default, and call KeyFrameAnimation_ResolveKeyFrames.
33140 2007-08-08 Chris Toshok <toshok@ximian.com>
33142 * clock.cpp (Begin): make sure we handle clocks that seek in the
33145 2007-08-08 Chris Toshok <toshok@ximian.com>
33147 * canvas.cpp (Canvas::Canvas): create a temporary namescope
33148 whenever we create a canvas. We need this for animations that are
33149 started before the canvas is attached to the tree, or in any case
33150 where FindName is called on code associated with a subtree before
33151 it's added to the surface.
33153 * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
33154 Storyboard.TargetName can be assigned to the parent storyboard as
33155 well as the animation. Loop up the clock hierarchy when looking
33156 for the targetname.
33158 2007-08-07 Chris Toshok <toshok@ximian.com>
33160 * animation.cpp, animation.h
33161 (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
33162 iterate over all the keyframes looking for the last one - just
33163 look at the last one in the sorted list.
33165 2007-08-07 Jeffrey Stedfast <fejj@novell.com>
33167 * media.cpp (SetValue): Only crop position values if we're not
33168 updating state from the media player (we're allowed to set values
33169 outside of the duration range from the media player). Also, do our
33171 (OnPropertyChanged): Don't do our seeking here because we can't
33172 get the actual seek position as GetValue()'s override will
33173 re-query the media player for its actual position.
33175 * mplayer.cpp (Open): Don't create the threads here anymore,
33176 create them in Play() instead. Also calculate ahead of time the
33177 new audio->pts_per_frame value which allows the video to keep even
33178 better sync with the audio (we used to base this on actual time
33179 spent playing the audio frame rather which could sometimes be off
33181 (AdvanceFrame): If seek_pts is non-zero, then we need to base
33182 target_pts on it rather than video->initial_pts (assuming we have
33183 no audio to sync to).
33184 (Play): Set playing = true and create the audio/io threads.
33185 (Close): A lot of the logic has been moved into a new method,
33187 (StopThreads): Stop the threads and reset minimal state.
33188 (Stop): Call StopThreads() and seek back to the beginning of the
33190 (Seek): Implemented.
33191 (Position): Back to subtracting the initial_pts so that we always
33192 have a range of 0:duration. If seek_pts is set and >target_pts,
33193 use that rather than target_pts so even if we are in a stopped
33194 state, querying the position will return expected results.
33195 (audio_play): Return audio->pts_per_frame rather than the actual
33198 2007-08-06 Jackson Harper <jackson@ximian.com>
33200 * xaml.cpp: add VisualCollections.
33202 2007-08-06 Chris Toshok <toshok@ximian.com>
33204 * clock.cpp, clock.h: this might be completely wrong and break
33205 other demos... but childless clockgroups Stop when they hit their
33206 duration, they don't SkipToFill. fixes the silverlightclr balls
33209 2007-08-06 Larry Ewing <lewing@novell.com>
33211 * dependencyobject.h:
33212 * dependencyobject.cpp:
33215 * type.cpp: add const to the various string apis.
33217 2007-08-06 Jeffrey Stedfast <fejj@novell.com>
33219 * mplayer.cpp: Fixes to make it work with media files w/ no audio
33220 (or where we are unable to play the audio).
33222 2007-08-04 Chris Toshok <toshok@ximian.com>
33224 * brush.h, brush.cpp: add VisualBrush.
33226 * xaml.cpp (xaml_init): hookup VisualBrush parsing.
33228 * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
33230 2007-08-04 Chris Toshok <toshok@ximian.com>
33232 * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
33233 to work properly, panel needs to call
33234 FrameworkElement::Invalidate, not parent->ChildInvalidated
33237 * uielement.h, uielement.cpp: add an Invalidated event for use by
33240 2007-08-03 Chris Toshok <toshok@ximian.com>
33242 * collection.cpp (Collection::Add, Collection::Insert): reinstate
33243 jackson's merging code, but only do it if @data's namescope is
33246 * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
33248 * xaml.cpp (xaml_create_from_str): set the namescope to be
33249 temporary if create_namescope is false.
33250 (xaml_create_from_file): same.
33252 2007-08-03 Chris Toshok <toshok@ximian.com>
33254 * panel.h, panel.cpp: add an optimization for the 2 updates that
33255 travel down the tree (UpdateTotalOpacity and UpdateTransform).
33256 Since we're already invalidating the panel's bounds (in fact we do
33257 it before traversing), we can ignore the invalidates which come
33258 back up the tree from the children.
33260 * media.cpp, media.h: make NaturalDuration a Duration. this gets
33261 the last of roeder's demos sorta working.
33263 2007-08-03 Jeffrey Stedfast <fejj@novell.com>
33265 * mplayer.cpp: Whenever we change the 'paused' state, signal to
33266 the other thread(s) that it has changed so that they can go on
33267 with their lives immediately rather than waiting for the kernel to
33270 2007-08-02 Chris Toshok <toshok@ximian.com>
33272 * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
33273 you get your panties in a twist, check this out. If you have a
33274 control and set both its Canvas.LeftProperty and that of its root
33275 object (the return value of InitializeFromXaml), the effects are
33276 *additive*, yet GetValue on each object returns exactly what you'd
33277 expect - the value you set on it. The only reasonable explanation
33278 for this is that Control has Canvas's layout algorithm c&p'ed into
33281 2007-08-02 Chris Toshok <toshok@ximian.com>
33283 * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
33284 functions to returning DependencyObjects instead of UIElements.
33285 in javascript you can create arbitrary xaml hierarchies (transform
33286 groups, brushes, etc).
33288 * control.cpp: need a cast here due to the above change.
33290 2007-08-02 Chris Toshok <toshok@ximian.com>
33292 * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
33293 stuff the gtk_widget_queue_draw_area call there.
33295 * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
33296 panel.cpp, control.h, control.cpp: change the way
33297 UIElement::Invalidate works. It used to call GetSurface() which
33298 would recurse up the tree to the root, and return the Surface*
33299 back down. It would then call gtk_widget_queue_draw_area there.
33300 This left little room for optimization. Switch everything over to
33301 using a new method implemented by all container classes,
33302 ChildInvalidated. Basically Invalidate's recurse up to the root
33303 as before, but the actual gtk call happens at the root (well, 1
33304 level above it. at the Surface itself). In the future we can
33305 freeze Invalidates in container elements when they do things like
33306 update their transform so we'll just send 1 Invalidate up the
33307 tree, not N Invalidates for N children.
33309 2007-08-02 Jeffrey Stedfast <fejj@novell.com>
33311 * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
33314 * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
33315 (IsPaused): New method.
33317 * media.cpp (MediaElement::GetValue): If the Position is being
33318 requested, query the MediaPlayer.
33319 (MediaElement::SetValue): Make sure the PositionProperty value is
33320 within bounds and force it to be if not.
33321 (MediaElement::Stop): Do nothing if we aren't playing/paused.
33322 (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
33325 2007-08-02 Chris Toshok <toshok@ximian.com>
33327 * uielement.h, uielement.cpp: propagate opacity changes the way we
33328 do transform changes. Store the total opacity of an item in the
33329 item, as we do with absolute_xform. This keeps us from doing a
33330 walk up to the root of the hierarchy every time we have to draw an
33331 element (which we we were doing before in
33332 UIElement::GetTotalOpacity.)
33334 * panel.cpp, panel.h: when we update our total opacity, loop over
33335 the children telling them to update as well.
33337 * collection.cpp: propagate the panel's total opacity downward
33338 into the newly added subtree.
33340 2007-08-02 Chris Toshok <toshok@ximian.com>
33342 * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
33343 GetSurface/SetSurface.
33345 2007-08-02 Chris Toshok <toshok@ximian.com>
33347 * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
33348 handle the property changing.
33350 * control.h, control.cpp: rip out all the proxying behavior.
33351 Control now works as a very specialized container. Imagine if
33352 Panel had only 1 child, and no generalized way of manipulating it
33353 (other than initializing it from a xaml fragment), and you have
33356 2007-08-01 Larry Ewing <lewing@novell.com>
33358 * xaml.cpp: don't ever make the previous point relative.
33360 2007-08-01 Jeffrey Stedfast <fejj@novell.com>
33362 * text.h: Removed deprecated enum values for FontWeights
33364 * media.cpp, mplayer.cpp: Updated to add features newly added with
33365 the July 2007 release of Silverlight 1.1
33367 2007-07-31 Chris Toshok <toshok@ximian.com>
33369 * runtime.cpp (Attach): attach a namescope to the toplevel canvas
33370 if there isn't one when it's attached.
33372 2007-07-31 Jeffrey Stedfast <fejj@novell.com>
33374 * media.cpp: NaturalDuration is actually a TimeSpan, not a
33377 2007-07-31 Chris Toshok <toshok@ximian.com>
33379 * media.h, media.cpp: move the MediaBase events to MediaElement.
33381 2007-07-31 Jeffrey Stedfast <fejj@novell.com>
33383 * text.h: Added StyleSimulations enum values.
33385 * xaml.cpp: Updated the StyleSimulations enum mapping.
33387 2007-07-31 Chris Toshok <toshok@ximian.com>
33389 * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
33390 enum StyleSimulations.
33392 * xaml.cpp: add stylesimulations enum map.
33394 2007-07-30 Chris Toshok <toshok@ximian.com>
33396 * uielement.cpp, uielement.h: add the Tag property.
33398 2007-07-30 Chris Toshok <toshok@ximian.com>
33400 * animation.h, animation.cpp: add the three KeyFrameCollection
33401 subclass types, and switch all references to "KeyFrameCollection"
33402 to the more specific types.
33404 * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
33405 with Color/Double/PointKeyFrameCollections as subclasses.
33407 * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
33410 2007-07-30 Larry Ewing <lewing@novell.com>
33412 * color.cpp: make sure that we size expand 3 digit color
33413 specifications properly.
33415 2007-07-30 Chris Toshok <toshok@ximian.com>
33417 * uielement.h, uielement.cpp: remove InsideObject from here, and
33418 move its warning to Visual::InsideObject instead.
33420 * visual.h, visual.cpp: add visual.cpp, and move implementation of
33421 InsideObject there.
33423 * Makefile.am (libmoon_la_SOURCES): add visual.cpp
33425 2007-07-30 Larry Ewing <lewing@novell.com>
33427 * xaml.cpp: correct smooth path segments to use the correct value for
33428 cp1 and don't try to make it relative because all the sources are
33429 absolute. Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
33431 2007-07-30 Chris Toshok <toshok@ximian.com>
33433 * clock.h, clock.cpp: add very naive, probably broken first pass
33436 2007-07-30 Chris Toshok <toshok@ximian.com>
33438 * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
33440 2007-07-30 Chris Toshok <toshok@ximian.com>
33442 * brush.h, brush.cpp: track breaking change of the
33443 Brush.Transform/RelativeTransform properties - they're speced to
33444 be Transforms, not TransformGroups.
33446 2007-07-29 Chris Toshok <toshok@ximian.com>
33448 * collection.h, collection.cpp: change "ResourceCollection" to
33449 "ResourceDictionary".
33451 * uielement.cpp: same.
33453 * type.cpp, type.h, value.cpp, value.h: same.
33457 2007-07-27 Chris Toshok <toshok@ximian.com>
33459 * xaml.cpp (xaml_set_property_from_str): look up the enum map from
33460 the property name, not the value.
33462 2007-07-27 Chris Toshok <toshok@ximian.com>
33464 * transform.h, transform.cpp: cache the transformation matrix once
33465 we recompute it. This gives us the responsiveness of delayed
33466 updating without the cost of calculating the matrix once per
33467 object associated with it. a property change just sets the
33468 "need_update" flag, which causes a recompute on the next
33471 2007-07-27 Larry Ewing <lewing@novell.com>
33473 * uielement.cpp: implement initial support for OpacityMask.
33475 2007-07-26 Miguel de Icaza <miguel@novell.com>
33477 This implements support for relative MediaElement sources and
33478 makes all of them go through the downloader, like we do for
33481 * media.cpp (MediaElement): Do an implementation of SetSource
33482 similar to the one in Image. Although there is some code that
33483 could be shared, the problem is that some parameters get in the
33486 (MediaElement::DownloaderComplete): Move the playback here.
33488 (StopLoader): Utility routine, factor this out also on the Image
33489 case, and hook this up to the destructor of Image and
33493 2007-07-25 Chris Toshok <toshok@ximian.com>
33495 * media.h, media.cpp: add the MediaElement events,and emit
33496 DownloadProgressChanged and CurrentStateChanged.
33498 2007-07-25 Chris Toshok <toshok@ximian.com>
33500 * media.h, media.cpp: register the 3 MediaBase events. now we
33501 need to figure out where to emit them.
33503 2007-07-25 Jackson Harper <jackson@ximian.com>
33505 * value.cpp: Assign the kind for NPOBJs.
33507 2007-07-25 Miguel de Icaza <miguel@novell.com>
33509 * openfile.cpp (open_file_dialog_show): Change this method to
33510 return an array with all the selected files.
33512 2007-07-24 Chris Toshok <toshok@ximian.com>
33514 * runtime.h, runtime.cpp: permit setting of the the surface's
33515 background color, which is used to fill the widget before we
33516 render the toplevel canvas. only do this, though, if the canvas
33517 is not transparent.
33519 2007-07-24 Chris Toshok <toshok@ximian.com>
33521 * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
33522 of making the assignment.
33524 * canvas.h, canvas.cpp: make surface private, and add SetSurface
33525 for runtime.cpp to use.
33527 2007-07-24 Chris Toshok <toshok@ximian.com>
33529 * brush.h, brush.cpp: make ImageBrush::SetSource take a const
33532 2007-07-24 Jackson Harper <jackson@ximian.com>
33534 * type.h.in: Add the NPOBJ type.
33535 * value.h.in: Add the npobj value, it's just stored as a pointer
33536 so that we don't become dependent on mozilla.
33537 * value.cpp|h,type.h: sync.
33539 2007-07-24 Jackson Harper <jackson@ximian.com>
33541 * typegen.cs: Kind.cs lives in agmono now.
33544 2007-07-24 Chris Toshok <toshok@ximian.com>
33546 * media.h, media.cpp: const-ify the PartName argument of the
33547 SetSource methods. also, ref the new downloader before unreffing
33548 the old one in Image::SetSource. they could be the same object.
33550 2007-07-24 Chris Toshok <toshok@ximian.com>
33552 * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
33553 is NULL, return early.
33555 2007-07-23 Chris Toshok <toshok@ximian.com>
33557 * Makefile.am (libmooninclude_headers): add some missing headers.
33559 * error.h: split out the error classes here.
33561 * libmoon.h: include error.h
33563 * xaml.h: remove the error classes from here.
33565 * xaml.cpp: include error.h
33567 2007-07-23 Miguel de Icaza <miguel@novell.com>
33569 * runtime.cpp: Removed the timer code from here, move to plugin.
33571 2007-07-20 Chris Toshok <toshok@ximian.com>
33573 * xaml.cpp (custom_add_child): this method is what's called when
33574 we add a child to an element of a custom namespace. Trouble is,
33575 it might be a panel subclass. If it is, and the child is a
33576 UIElement subclass, go ahead and add the child using
33577 panel_child_add. This gets the Loaded events working properly in
33578 the chess demo (the trouble was that the custom children weren't
33579 even added to the tree, so their OnLoaded methods weren't being
33582 2007-07-20 Miguel de Icaza <miguel@novell.com>
33584 * collection.cpp: Add support for RemoveAt.
33586 * runtime.cpp (html_timer_timeout_add): Added helper routine to
33587 setup Html timeouts.
33589 2007-07-20 Chris Toshok <toshok@ximian.com>
33591 * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
33592 from Canvas to Panel. I consider this cleaning up the source, as
33593 it's entirely possible to write Panel subclasses that aren't
33594 Canvas subclasses, but if you did that you'd have no
33595 rendering/event handling.
33597 Now pretty much all logic that involves iterating over the list of
33598 children is in Panel. This also greatly simplifies Canvas. It is
33599 now just a Panel with 2 interesting things about it: 1) it
33600 provides 2 attached properties to lay out its children, and 2) it
33601 allows the surface to dictate its bounds if it's the toplevel
33604 2007-07-20 Chris Toshok <toshok@ximian.com>
33606 * downloader.cpp (Open): set the uri of the downloader.
33608 2007-07-20 Chris Toshok <toshok@ximian.com>
33610 * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
33611 so the potentially large number of objects which don't register
33612 events don't allocate them.
33614 2007-07-20 Chris Toshok <toshok@ximian.com>
33616 * clock.h, clock.cpp: lock around access to the tick_call list, so
33617 tick calls can be added from other threads.
33619 2007-07-16 Miguel de Icaza <miguel@novell.com>
33621 * media.cpp (SetSource): Also handle Completed.
33623 * downloader.cpp (Send): If a send operation is performed on an
33624 object that has completed its operation, immediately emit the
33625 finished event or error event.
33627 (Open): During open invalidate the state, to
33628 ensure that new downloads are properly triggered.
33630 2007-07-16 Chris Toshok <toshok@ximian.com>
33632 * frameworkelement.h, frameworkelement.cpp: we need
33633 framework_element_new so managed subclasses of FrameworkElement
33636 * uielement.h, uielement.cpp: same for this type.
33638 2007-07-13 Chris Toshok <toshok@ximian.com>
33640 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
33641 normally we'd only update the bounds of this element on a
33642 width/height change, but if the render transform is someplace
33643 other than (0,0), the transform needs to be updated as well.
33645 2007-07-12 Chris Toshok <toshok@ximian.com>
33647 * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
33648 capturing. This should be on Visual and not UIElement, but we
33649 don't dispatch events that way.
33651 2007-07-12 Chris Toshok <toshok@ximian.com>
33653 * downloader.h, downloader.cpp: make the Downloader object a bit
33654 more C++ friendly, and make all the private data private.
33656 Also, take this opportunity to switch to using RegisterEvent/Emit
33657 to generate events, instead of the custom listeners. This will
33658 let JS hook up to the events.
33660 * media.h, media.cpp: track the downloader changes.
33662 2007-07-11 Jackson Harper <jackson@ximian.com>
33664 * collection.cpp: Comment out the namescope merging stuff for now,
33665 it causes some regressions.
33667 2007-07-12 Jackson Harper <jackson@ximian.com>
33669 * xaml.cpp: Restart the whole attribute parsing loop when the
33670 reparse flag is set, otherwise the first attribute will be
33673 2007-07-11 Chris Toshok <toshok@ximian.com>
33675 * uielement.cpp (UIElement::UIElement): the event names need to
33676 match those used by microsoft. makes it easier to handle the
33677 event hooking up in the plugin, where the event names are used.
33679 2007-07-11 Chris Toshok <toshok@ximian.com>
33681 * xaml.cpp (xaml_set_property_from_str): the plugin does its own
33682 resolution of properties now, so it doesn't need to pass the
33683 property name. Change this to take the DependencyProperty*
33686 * xaml.h: change prototype for xaml_set_property_from_str.
33688 2007-07-11 Jackson Harper <jackson@ximian.com>
33690 * collection.cpp: When new objects are added to a collection, try
33691 to merge them into the containers namescope.
33693 2007-07-11 Jackson Harper <jackson@ximian.com>
33695 * xaml.cpp: We need to stop parsing if there is an error while
33696 resolving a custom namespace type.
33698 2007-07-10 Chris Toshok <toshok@ximian.com>
33700 * dependencyobject.cpp (resolve_property_path): we need to reset
33701 "expression_found" when we hit a '.' so that we'll lookup what
33704 2007-07-10 Chris Toshok <toshok@ximian.com>
33706 * dependencyobject.cpp (resolve_property_path): we need to be able
33707 to handle more than just single digit indexers. use strtol and
33708 recompute 'i' afterward.
33710 * canvas.cpp (Canvas::InsideObject): revert the change that helped
33711 dr.popper because it breaks lunareclipse.
33713 2007-07-09 Chris Toshok <toshok@ximian.com>
33715 * demo.cpp: don't pass the parser callbacks to the individual xaml
33718 * control.h, control.cpp: don't pass the parser callbacks to
33719 initialize_from_xaml.
33721 * xaml.h, xaml.cpp: remove the parser callbacks from the
33722 individual parsing methods, and add xaml_set_parser_callbacks.
33724 2007-07-09 Jeffrey Stedfast <fejj@novell.com>
33726 * mplayer.cpp (audio_loop): If we break out of the loop because
33727 the media player was stopped, don't forget to unlock the pause
33729 (Close): Don't free the uri here.
33730 (~MediaPlayer): Free it ehre, though.
33732 2007-07-09 Chris Toshok <toshok@ximian.com>
33734 * uielement.h, uielement.cpp: we need to register the
33735 KeyUp/KeyDown events (even if we aren't emitting them) to keep
33736 from getting a warning when running aglayoutdemo.
33738 * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
33739 method (and remove all error handling, which should likely go back
33740 in) and replace the previous implementation. It was failing to
33741 parse timespans like this: 0:0:0.20000000 because it was treating
33742 it as if I wanted "20000000" tenths of a second, instead of 2.
33743 This makes the 'pop' animation in dr.popper actually show up.
33745 2007-07-09 Chris Toshok <toshok@ximian.com>
33747 * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
33749 (Storyboard::Begin): This is a dubious change. Remove the check
33750 to see if we weren't already Active. This fixes the calendar view
33751 in airlines, since there's a window where the start animation is
33752 startable when we enter a day, but the end animation isn't (since
33753 it's still active) when we leave. So we're left with a selected
33756 * clock.cpp: instead of Stopping clocks that come to the end of
33757 their active period, move to the Filling state. ClockGroups with
33758 automatic duration and no Active children still stop correctly.
33760 2007-07-08 Chris Toshok <toshok@ximian.com>
33762 * many-files (again!): another, smaller change to the event stuff.
33763 stop using strings for everything that we can. Register events at
33764 object construction time, and use those id's for everything else.
33765 The string interface is still around because of
33766 EventTrigger::Set/RemoveTarget, as well as the managed code.
33768 One further change that's needed - the id's are per-instance now,
33769 which is stupid. they should be static.
33771 This further cuts down the work (in terms of hash functions) that
33772 needs to be performed in order to dispatch an event.
33774 2007-07-08 Chris Toshok <toshok@ximian.com>
33776 * many-files: fairly big change. Stick the EventObject class
33777 between Base and DependencyObject in the hierarchy, and get rid of
33778 DependencyObject's "events" field. Get rid of all the registered
33779 events on surface, and emit them directly from the elements where
33780 they occur. This allows us to remove the Surface* parameter to
33781 all the event methods. Also, change the EventHandler signature to
33782 include the sender of the event as well as a "calldata" pointer,
33783 which is where we stuff the unmanaged MouseEventArgs (and later
33784 will the KeyboardEventArgs).
33786 Next step is to add RegisterEvent in EventObject and use that
33787 integer id everywhere instead of the string name when we Emit
33790 2007-07-07 Chris Toshok <toshok@ximian.com>
33792 * dependencyobject.h: add GetName() instance method.
33794 * dependencyobject.cpp (dependency_object_get_name): and call it
33797 * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
33798 implementation here since FrameworkElement just goes by
33801 * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
33802 same element" optimization. it's stupid and doesn't work. what
33804 (Canvas::ComputeBounds): simplify this by using
33805 item->GetLayoutVisible instead of item->GetValue.
33806 (Canvas::Render): enable the rendering optimization where we only
33807 bother rendering elements whose bounds intersect those of the
33808 rectangle we're repainting. This seriously speeds up airlines.
33810 * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
33811 another flag. now the three VisibilityProperty states are
33812 represented by two flags.
33814 Also, remove the implementation of GetSizeForBrush (not all
33815 UIElements are stroked) and warn callers.
33817 * control.cpp: Attach to the real object, and report back its
33818 property changes to our parents. Also, control_initialize_from_xaml
33819 should call Control::InitializeFromXaml.
33821 * control.h: override the 3 Get*Visible methods from UIElement,
33822 and return our real_object's state.
33826 2007-07-07 Jeffrey Stedfast <fejj@gnome.org>
33828 * demo.cpp (FileDownloadState::Send): Only notify complete if uri
33829 != NULL (if uri is NULL, then it means it couldn't be opened).
33830 (FileDownloadState::Open): notify error if we can't open the file.
33832 * mplayer.cpp: Fix to make sure we have
33833 AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
33834 before calling decode to prevent an ffmpeg warning.
33836 2007-07-07 Chris Toshok <toshok@ximian.com>
33838 * brush.cpp: make sure to use GetSizeForBrush for everything
33839 instead of cairo_stroke_extents, which won't work for non-stroked
33840 elements like canvases. Also, notify changes to the
33841 GradientStopCollection up the hierarchy properly.
33843 * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
33844 implementation for FrameworkElement so Canvases (and other
33845 uielement subclasses) can have brushes assigned to them (canvas
33846 uses it for its background.)
33848 * canvas.cpp (Canvas::Render): remove the unused label.
33850 2007-07-06 Miguel de Icaza <miguel@novell.com>
33852 * media.cpp: Do not pass the filename as the result now on the
33853 calls. Code must use the downloader_get_response_text or
33854 downloader_get_response_file to get the contents from the download
33855 (as the request will include the part name).
33857 * downloader.cpp: Add a cache for zip file parts.
33859 * media.h (Image): track the part name that was requested on the
33862 2007-07-06 Chris Toshok <toshok@ximian.com>
33864 * canvas.cpp (Canvas::ComputeBounds): if the width/height
33865 framework element properties haven't been set (their default is
33866 0.0), then don't union it with the rest of our bounds.
33868 2007-07-06 Chris Toshok <toshok@ximian.com>
33870 * runtime.h, runtime.cpp: continue the marginalization of
33871 Surface-as-general-data-dumping-ground by passing the cairo
33872 context to all the event handlers that need it (all but Leave, but
33873 should we make this distinction?).
33875 Make tons of stuff private that doesn't need exposing. Add
33876 accessors for the easier things, and leave the callbacks public
33877 for now. Also clean up the partially C/partially c++
33878 implementation in runtime.cpp. Now the C api is a thin wrapper
33879 around instance method calls, and all the gtk/clock event
33880 callbacks are static methods so they can still access the private
33883 * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
33884 uielement.cpp: fallout from the event signature changes - add
33885 cairo_t* to a lot of places, basically.
33887 * demo.cpp: no need to use the C api for Surface here. just use
33890 2007-07-06 Jeffrey Stedfast <fejj@novell.com>
33892 * media.cpp (OnPropertyChanged): Oops, be consistant with other
33893 implementations - only chain up if it wasn't a property owned by
33896 * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
33897 to save object size.
33899 * media.cpp (OnPropertyChanged): Fixed to always notify property
33900 listeners and chain up to our parent impl.
33902 2007-07-06 Miguel de Icaza <miguel@novell.com>
33904 * downloader.cpp: Implement the zip file support for the
33905 downloader using miniZip, from:
33907 http://www.winimage.com/zLibDll/minizip.html
33909 The implementation is in C++, so there are no needs to delegate
33910 this to the managed side as previously planned.
33912 There are two APIs: one returns a filename, the other returns the
33913 file loaded into memory, with the size of the memory blob.
33915 2007-07-06 Chris Toshok <toshok@ximian.com>
33917 * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
33918 track of the visibility (boolean, not three-state) and hit test
33919 visibility state in our flags. implement GetVisible() and
33920 GetHitTestVisible() using the flags.
33922 * canvas.cpp (Canvas::CheckOver): use GetVisible and
33923 GetHitTestVisible to avoid property lookups when dispatching
33926 2007-07-06 Chris Toshok <toshok@ximian.com>
33928 * runtime.cpp (measuring_context_create): we keep a singleton
33929 measuring context now.
33930 (measuring_context_destroy): do nothing here. it's freed in
33932 (runtime_shutdown): free up our measuring context.
33934 * canvas.cpp, canvas.h, control.cpp, control.h,
33935 frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
33936 text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
33937 InsideObject to take the cairo_t* instead of the Surface.
33939 2007-07-06 Chris Toshok <toshok@ximian.com>
33941 * runtime.cpp (Surface::SetCursor): new method, used in the event
33942 code to update the cursor as we enter/leave elements.
33944 * runtime.h: add method, cursor_instance field, and move the body
33945 of the Surface ctor (and initializations) to the .cpp file.
33947 * xaml.cpp: fix name of Cursor property enum mapping.
33949 * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
33950 control.cpp: add MouseCursor* arg to HandleMotion so we can report
33951 back cursor changes on elements.
33953 Also, in canvas.cpp, implement IsHitTestVisible checking in
33956 * enums.h: add the MouseCursor enum.
33958 2007-07-05 Chris Toshok <toshok@ximian.com>
33960 * Makefile.am (libmooninclude_headers): remove cutil.h
33961 (libmoon_la_SOURCES): remove cutil.cpp
33963 * cutil.h, cutil.cpp: remove. no longer necessary.
33965 * text.cpp (TextBlock::ComputeBounds): load the identity matrix
33966 before stroke/fill_extents to work around a cairo bug that was
33967 giving us enormous bounds on rotated elements. also, -1 from x/y
33968 and +2 to width/height of our bounds.
33970 * media.cpp (MediaElement::ComputeBounds): load the identity
33971 matrix before stroke/fill_extents to work around a cairo bug that
33972 was giving us enormous bounds on rotated elements. also, -1 from
33973 x/y and +2 to width/height of our bounds.
33974 (Image::ComputeBounds): same.
33976 * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
33977 no stroke, we drew it, and do_op was true.
33978 (Shape::ComputeBounds): load the identity matrix before
33979 stroke/fill_extents to work around a cairo bug that was giving us
33980 enormous bounds on rotated elements. also, -1 from x/y and +2 to
33981 width/height of our bounds.
33983 * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
33984 subproperty changes on RenderTransformOrigin, since it's a point
33985 and not a dependency object.
33987 2007-07-05 Chris Toshok <toshok@ximian.com>
33989 * runtime.cpp, runtime.h: store the last mouse position of events
33990 so that we can continue to update after the clock tick (and
33991 provide motion/enter/leave events to elements that might have
33992 moved under the pointer).
33994 The "update-input" event isn't presently emitted (see clock.cpp)
33995 because it results in this code calling HandleMotion on every
33996 tick, which ends up emitting the C# event (which is wrong).
33998 * clock.h, clock.cpp: add a (presently unused) phase to the clock
33999 tick to update the current mouse over after we've updated our
34000 clocks (and therefore possibly updated the transforms on
34003 2007-07-05 Chris Toshok <toshok@ximian.com>
34005 * dependencyobject.cpp (dependency_object_get_name): change this
34006 to return the x:Name value if there is one (and "(null)" if not).
34007 (dependency_object_get_type_name): and make this function do the
34008 job originally done by _get_name.
34010 * dependencyobject.h: add dependency_object_get_type_name
34013 2007-07-05 Chris Toshok <toshok@ximian.com>
34015 * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
34016 mouse event code so that the Handle* calls return void, like the
34017 Enter/Leave calls do. Also, all checks for "inside"-ness happen
34018 in the canvas/parent object. Also factored out the loop over
34019 children to "FindMouseOver", with the checks happening in
34022 This needs more testing to make sure that we're still emitting
34023 events in the right order/amount as silverlight.
34025 In uielement.cpp, also add support for showing the bounding
34028 * control.h, control.cpp: track event refactoring.
34030 * frameworkelement.cpp (FrameworkElement::InsideObject): remove
34031 the bounding rect check. that's handled in the parent object now.
34033 2007-07-04 Chris Toshok <toshok@ximian.com>
34035 * media.cpp, media.h: rework our caching for images. we now
34036 properly refcount things, don't leak the filename (or the
34037 surface), share 1 xlib surface amongst all Image's, and don't
34038 crash. improvements all around!
34040 2007-07-04 Miguel de Icaza <miguel@novell.com>
34042 * value.cpp (Value): Add a couple of extra cases I had missed
34043 where we should be using g_new instead of new as FreeValue always
34046 2007-07-03 Jackson Harper <jackson@ximian.com>
34048 * xaml.cpp: Add the stylus types and some missing collections,
34049 this brings us up to sync with everything implemented in
34052 2007-07-03 Chris Toshok <toshok@ximian.com>
34054 * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
34055 filled), we need to call cairo_new_path.
34057 2007-07-03 Jackson Harper <jackson@ximian.com>
34059 * xaml.cpp: Some post parsing memory cleanup and a little extra
34062 2007-07-03 Chris Toshok <toshok@ximian.com>
34064 * text.h: add prototype for text_block_set_font_source.
34066 2007-07-03 Chris Toshok <toshok@ximian.com>
34068 * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
34069 brush property changes. Property chain up to
34070 Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
34071 (Shape::ComputeBounds): we need to do the fill, so pass true as
34072 consider_fill to DoDraw. otherwise a stroke-less filled shape
34073 gets bounds with w == h == 0.0.
34075 2007-07-03 Chris Toshok <toshok@ximian.com>
34077 * collection.cpp (VisualCollection::Clear): force the invalidate
34078 when we update our bounds. Also, don't do anything if the length
34079 of the collection is 0.
34081 2007-07-03 Chris Toshok <toshok@ximian.com>
34083 * canvas.cpp (Canvas::ComputeBounds): we need to always include
34084 our FrameworkElement::Width/Height in our bounds computation,
34085 instead of only consulting them if we have no children.
34087 2007-07-03 Chris Toshok <toshok@ximian.com>
34089 * media.cpp, media.h: add an image surface cache. we don't cache
34090 the xlib surface unfortunately, so there's still a slowdown from
34091 generating 1 per Image for shared pixbufs.
34093 2007-07-03 Miguel de Icaza <miguel@novell.com>
34095 * collection.cpp: Add support for reporting errors if the iterator
34096 gets out of sync with the collection.
34098 * demo.cpp: Updated to the new downloader interface.
34100 * downloader.cpp: Eliminates the in-memory buffer during
34103 We still do the progressive updates as those are necessary for the
34104 progress indicators, and if we ever need to hook up during
34105 progressive downloads again.
34107 But now downloads on completion must notify the downloader of the
34108 local file where the download contents have been placed (necesary
34109 for implementing the Zip-file support).
34111 (Downloader): eliminate our in-memory buffer byte_array_contents
34113 (downloader_notify): takes a new extra argument, overloaded
34114 depended on the operation.
34116 (get_response_text): currently not implemented, it needs to be
34117 implemented by a callback into managed code so we can use ZipLib
34118 (unless we can find a suitable unmanaged version).
34120 * media.cpp: Remove the stale code for progressive image
34122 2007-07-02 Miguel de Icaza <miguel@novell.com>
34124 * media.cpp (SetSource): If we had a previous downloader, unref
34127 2007-07-02 Chris Toshok <toshok@ximian.com>
34129 * collection.cpp (VisualCollection::Remove): punt on the optimized
34130 behavior for now. invalidating just the item should work if the
34131 item's bounds are correct, but for some reason the map path
34132 segments in the airline demo aren't redrawing properly. So, for
34133 now we just invalidate the parent container when an item is
34136 * control.h, control.cpp: override GetValue to report back values
34137 from our real_object if there is one, from us otherwise. and
34138 override SetValue to set values both on us and the real_object if
34141 Also, do nothing in our ComputeBounds call. Our GetBounds always
34142 returns the right thing (the bounds of the real_object), so
34143 there's no need to do any computation.
34145 lastly, remove the OnChildPropertyChanged. This is only invoked
34146 for attached properties, so we shouldn't ever be called.
34148 2007-07-02 Chris Toshok <toshok@ximian.com>
34150 * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
34151 updatebounds/invalidate here. UpdateTransform will take care of
34154 2007-07-02 Chris Toshok <toshok@ximian.com>
34156 * shape.cpp (Shape::OnPropertyChanged): turns out we need to
34157 update our bounds on the FillProperty changing as well, for shapes
34158 that aren't stroked.
34160 2007-07-02 Miguel de Icaza <miguel@ximian.com>
34162 * collection.cpp: Guard for cases where we are not attached to
34163 anything (closure is set to NULL).
34165 2007-07-02 Chris Toshok <toshok@ximian.com>
34167 * collection.cpp (collection_iterator_move_next): rework the logic
34168 here so we don't do the "current = next" assignment if
34169 iterator->first is true.
34170 (VisualCollection::Add): fix g++ warning.
34171 (TriggerCollection::SetVal): return the old element.
34173 2007-07-02 Jackson Harper <jackson@ximian.com>
34175 * xaml.cpp: Convert char data into Runs and set them on
34176 TextBlocks, also flush the char data when starting elements, so
34177 things like: <TextBlock>line one<LineBreak />line two</TextBlock>
34178 work properly. <TextBlock><TextBlock.Inlines>text... is illegal
34181 2007-07-02 Miguel de Icaza <miguel@novell.com>
34183 * value.cpp: Use g_malloc/g_free as the managed code is not able
34184 to use C++ new operator, so we have a potential error when we
34185 mismatch g_new with new and g_free with delete.
34187 Reported by Valgrind.
34189 * uielement.cpp: Add new helper method needed by Alan.
34191 2007-07-01 Chris Toshok <toshok@ximian.com>
34193 * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
34194 notify attachees here.
34196 * text.cpp (TextBlock::OnPropertyChanged): need to notify on
34197 Actual Width/Height property changes, even if we don't recalc
34200 2007-07-01 Chris Toshok <toshok@ximian.com>
34202 * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
34203 guidelines here. need to chain up to FrameworkElement. fixes
34206 2007-07-01 Chris Toshok <toshok@ximian.com>
34208 * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
34209 (Polygon::OnPropertyChanged): same.
34210 (Path::OnPropertyChanged): same.
34211 (Shape::OnPropertyChanged): same.
34212 (Rectangle::OnPropertyChanged): same.
34214 * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
34216 (PathGeometry::OnPropertyChanged): same.
34217 (PathFigure::OnPropertyChanged): same.
34219 * brush.cpp (Brush::OnPropertyChanged): use the recommended
34221 (SolidColorBrush::OnPropertyChanged): same.
34222 (GradientBrush::OnPropertyChanged): same.
34223 (LinearGradientBrush::OnPropertyChanged): same.
34224 (RadialGradientBrush::OnPropertyChanged): new method.
34227 * brush.h: add RadialGradientBrush::OnPropertyChanged.
34229 * animation.cpp (animation_init): mark the storyboard TargetName
34230 and TargetProperty properties as attached.
34232 * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
34234 (Run::OnPropertyChanged): same.
34235 (Inline::OnSubPropertyChanged): add to handle the inline's
34236 foreground brush changing.
34238 * text.h: add Inline::OnSubPropertyChanged.
34240 * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
34241 background brush, and invalidate whenever it changes.
34243 2007-06-30 Chris Toshok <toshok@ximian.com>
34245 * shape.cpp (Shape::OnPropertyChanged): when need to update our
34246 bounding rectangle when a number of the stroke properties change.
34247 Also update them when the stroke itself is changed.
34249 2007-06-29 Chris Toshok <toshok@ximian.com>
34251 * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
34252 we need it for the foreground property. Make this explicit.
34253 also, add an OnSubPropertyChanged method for Glyphs, to handle the
34256 2007-06-29 Chris Toshok <toshok@ximian.com>
34258 * uielement.cpp (UIElement::UpdateBounds): oops. really only do
34259 that invalidate if the flag is true.
34261 2007-06-29 Chris Toshok <toshok@ximian.com>
34263 * text.cpp: Do CalcActualWidtHeight on any property that might
34264 cause a change. This is going to be a performance hit, but we
34265 need to take this step backward to get things working with the new
34266 ComputeBounds stuff. we'll need to reoptimize this so that it
34267 still works. Make sure to listen to OnCollectionChanged so we'll
34268 update our bounds (and recompute our actual width/height) on
34269 Inlines collection changes.
34271 * text.h: remove OnSubPropertyChanged (since it's not used.) Add
34272 OnCollectionChanged.
34274 2007-06-29 Chris Toshok <toshok@ximian.com>
34276 * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
34277 can actually read it, and notify attachees of our property
34278 changes. this makes ZIndex setting resort the parent panels list.
34280 * uielement.h: add an arg to UpdateBounds (a bool that defaults to
34281 false) to force an invalidation of the new bounds.
34283 2007-06-29 Chris Toshok <toshok@ximian.com>
34285 * panel.h, panel.cpp: okay, i'm stupid. it's not
34286 OnChildPropertyChanged either. it's OnCollectionChanged. we
34287 seriously need to clean this stuff up.
34289 2007-06-29 Chris Toshok <toshok@ximian.com>
34291 * panel.h, panel.cpp: child ZIndex property changes are reflected
34292 via OnChildPropertyChanged, not OnSubPropertyChanged.
34294 2007-06-28 Chris Toshok <toshok@ximian.com>
34296 * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
34298 * collection.cpp (VisualCollectoin::Clear): update the panel's
34299 bounds after the clear so we redraw everything.
34301 2007-06-27 Chris Toshok <toshok@ximian.com>
34303 * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
34304 instead. Also, rename getbounds to ComputeBounds(), and add a new
34305 GetBounds which returns the bounding rectangle.
34307 * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
34308 Simplify it a bit by using Rect's instead of the 4 doubles. Note
34309 that the calls to item->GetBounds do *not* cause item's bounds to
34311 (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
34312 child when its Left/Top properties change.
34313 (Canvas::HandleMotion): use Rect.PointInside to clean up the
34315 (Canvas::HandleButton): same.
34316 (Canvas::Render): remove the local "item_rect" and just use the
34319 * uielement.cpp (UIElement::UpdateBounds): remember the old
34320 bounds, compute the new bounds, and (if they're different)
34321 invalidate both and chain up to the parent's UpdateBounds method.
34322 (UIElement::UIElement): init the bounds.
34323 (UIElement::OnPropertyChanged): when switch away from a lot of the
34324 FullInvalidate calls. If the clip or OpacityMask is changed, just
34325 Invalidate. If the RenderTransform or RenderTransformOrigin is
34326 changed, called UpdateTransform.
34327 (UIElement::UpdateTransform): all UpdateBounds, since it's
34328 uncommon that our transform will change without our bounds
34330 (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
34331 but again switch away from FullInvalidate to other more targeted
34332 methods. If the transform properties change, call
34333 UpdateTransform, for clip and OpacityMask just call Invalidate.
34334 (UIElement::Invalidate): add a Rect taking one that just
34335 invalidates the rect, and make the default variety call it with
34337 (UIElement::ComputeBounds): rename GetBounds().
34339 * shape.cpp (ComputeBounds): don't use GetSurface. use a
34340 measuring cairo context.
34341 (Shape::OnPropertyChanged): if the Stretch property changed,
34342 UpdateBounds. also, change from FullInvalidate to just Invalidate
34343 for everything. Remove the UpdateTransform call as that gets
34344 handled by UIElement::OnPropetyChanged.
34345 (Rectangle::OnPropertyChanged): we only need to invalidate on a
34347 (Polygon::OnPropertyChanged): if the Points property changes we
34348 need to UpdateBounds and force an Invalidate. otherwise, just
34349 Invalidate. no need for FullInvalidate always.
34350 (Polygon::OnCollectionChanged): new method.
34351 UpdateBounds+Invalidate to catch changes to the points collection.
34352 (Polyline::OnPropertyChanged): analogous changes as were made to
34353 Polygon::OnPropertyChanged.
34354 (Polyline::OnCollectionChanged): same as
34355 Polygon::OnCollectionChanged.
34357 * text.cpp (TextBlock::TextBlock): move the SetValue call to the
34358 end, past all the initialization of things that might be needed in
34359 ComputeBounds, which gets called.
34360 (TextBlock::ComputeBounds): don't use GetSurface. use a measuring
34362 (TextBlock::CalcActualWidthHeight): use a measuring context here.
34363 (TextBlock::OnPropertyChanged): remove unnecessary call to
34364 FrameworkElement::OnPropertyChanged from the end of the method.
34365 (Glyphs::ComputeBounds): return Rect (0,0,0,0).
34367 * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
34368 use a measuring context.
34369 (Image::ComputeBounds): same.
34370 (OnPropertyChanged): just Invalidate here, no need for
34372 (DownloaderEvent): just Invalidate here, not FullInvalidate.
34374 * frameworkelement.cpp (FrameworkElement::InsideObject): use
34377 * control.cpp (Control::GetBounds): use a Rect here.
34378 (Control::ComputeBounds): forward on to the real_object.
34380 * collection.cpp (VisualCollection::VisualUpdate): when adding an
34381 element, we need to force its invalidation, but not the parent's.
34382 we just update the parent's bounds and UpdateBounds will do the
34383 invalidating if it needs to.
34385 * runtime.cpp (surface_attach): we don't need to do a full
34386 invalidate. just update the bounds of the toplevel (which sets
34387 the width and height to the widget's) and force an invalidate
34388 (just in case the user set the width/height to exactly the same
34389 thing before attaching).
34390 (surface_size_allocate): same thing here - no need for
34391 FullInvalidate. Just update the bounds.
34392 (measuring_context_create): create a tiny surface and a cairo_t
34393 for use in measuring things.
34394 (measuring_context_destroy): destroy the surface and cairo_t.
34396 * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
34399 2007-06-28 Miguel de Icaza <miguel@novell.com>
34401 * runtime.cpp (expose_event_callback): Introduce a new
34402 "transparent" field in the Surface. If set, we clear the
34403 region with a transparent region.
34405 2007-06-27 Miguel de Icaza <miguel@novell.com>
34407 * runtime.cpp: Event handlers will work with or without GdkWindows
34408 on the GtkWindows in preparation to support Larry later.
34410 Paint the surface with alpha transparency for now, this breaks the
34411 F-Spot embedding but will be fixed later when we can paint at an
34412 offset, wonder if this will affect performance for now.
34414 Call gtk_event_box_set_visible_window () with TRUE, so that we
34415 have a window, for now we require this to get the events working
34418 * canvas.cpp: Drop the translate transform on the topmost canvas
34419 as that was breaking all the code that depended on the inverse
34420 matrix transform to work for doing coordinate mapping based on the
34423 Instead we need to draw the cairo context at the given offset
34424 in the repaint routine. This is left as an excercise for Larry.
34426 Tests to validate that the mouse input is working:
34428 * test/demo.exe: enter/leave
34430 * silverlight airlines
34431 * LunarEclipse designer.
34433 * value.cpp (FreeValue): New method that does the actual releasing
34434 of the value. We do this here so the managed code can release
34435 things in the same way.
34437 (value_free_value): helper method.
34439 2007-06-27 Chris Toshok <toshok@ximian.com>
34441 * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
34442 calls to RaiseAccumulatedEvents.
34444 2007-06-27 Chris Toshok <toshok@ximian.com>
34446 * clock.cpp (get_now): turns out we really do want this extra *10
34447 in there, so that it matches up with mono's TimeSpan.Tick values.
34449 2007-06-27 Chris Toshok <toshok@ximian.com>
34451 * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
34452 take part in bounds computation.
34453 (Canvas::HandleButton): !Visible elements don't take part in hit
34455 (Canvas::HandleMotion): same here.
34457 2007-06-27 Jackson Harper <jackson@ximian.com>
34459 * xaml.cpp: Use Type to lookup the property owner, because it
34460 might be a "ghost" type that the xaml parser can't lookup.
34462 2007-06-27 Miguel de Icaza <miguel@novell.com>
34464 * control.cpp: When handling events, we also need to pass the
34465 event notification to the control, not only to the "real_object"
34466 that we are proxying for. This is what cause the calendar to
34469 * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
34470 the canvas, instead use the point at (0,0) and the width, height
34471 with its absolute transformation.
34473 Otherwise canvases with children would end up with
34474 (0,0,0,0) and when compounded would extend the bounding box of
34475 containing ones to include this region even when not needed.
34477 2007-06-26 Chris Toshok <toshok@ximian.com>
34479 * uielement.h: add virtual GetSurface() method.
34481 * uielement.cpp: implement UIElement::GetSurface to just chain up
34482 to the parent element if we have one, and return NULL otherwise.
34483 Also, make item_get_surface call this method. removes the
34484 dependency on canvas.h from this file.
34486 * canvas.h: we override UIElement::GetSurface ()
34488 * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
34489 return our surface. otherwise call our base class's GetSurface.
34491 * media.h: rename Image::GetSurface here to GetCairoSurface to
34492 avoid name collision.
34494 * brush.cpp, media.cpp: track media.h change.
34496 2007-06-26 Miguel de Icaza <miguel@novell.com>
34498 * collection.h: Change of course. The actual public interface
34499 implements IList<T> and ICollection<T> not IList nor ICollection
34500 which means that Add does not need to return an index, and Remove
34501 must return whether it actually removed the object.
34503 * collection.h (Add): Make this method return the index of the
34504 object just created, so we can implement int IList.Add(...).
34506 Removed all the empty Add/Remove methods from collections that
34507 were not doing anything interesting with them, the remaining
34508 chunks of old hacks.
34510 * (SetVal): This method is used to replace a value at a given
34511 index with another one. For the C# IList.this [int] indexer.
34513 2007-06-26 Chris Toshok <toshok@ximian.com>
34515 * clock.cpp: make a copy of the child clocks lists before
34516 traversing them calling callbacks that could result in the lists
34519 2007-06-26 Chris Toshok <toshok@ximian.com>
34521 * dependencyobject.h: add OnCollectionChanged to allow
34522 propertychange notifications from elements in collections to
34523 bubble up to their parent.
34525 * collection.h: make the closure a DependencyObject*, just to be
34526 explicit. also, add OnSubPropertyChanged to Collection so we can
34527 generate OnCollectionChanged notifications.
34529 * collection.cpp: hook things up on elements in collections, and
34530 generate proper notifications from the collection to its closure.
34532 * enums.h: add CollectionChangeType for use in
34533 OnCollectionChanged.
34535 * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
34536 collection notification stuff to bubble changes up the hierarchy.
34538 2007-06-26 Jeffrey Stedfast <fejj@novell.com>
34540 * list.cpp (Replace): Added.
34542 * dependencyobject.cpp (dependency_object_get_value_no_default):
34543 New binding function.
34544 (dependency_object_get_object_type): Renamed from get_kind() which
34545 didn't mirror the native API at all.
34547 2007-06-26 Sebastien Pouliot <sebastien@ximian.com>
34549 * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
34550 * shape.cpp: Remove debugging output.
34552 2007-06-26 Chris Toshok <toshok@ximian.com>
34554 * uielement.h: change render/dorender to take a cairo_t* instead
34557 * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
34558 uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
34559 media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
34562 2007-06-25 Jeffrey Stedfast <fejj@gnome.org>
34564 * brush.cpp (LinearGradientBrush::SetupBrush): Use
34565 uielement->get_size_for_brush() because the framework width/height
34568 * text.cpp: Implement text wrapping and clipping to Width/Height
34569 bounds if specified.
34571 2007-06-25 Miguel de Icaza <miguel@novell.com>
34573 * runtime.cpp: Cope with the fact that we are now windowless and
34574 we will be sharing the parent's window. Fixes mouse events.
34576 * collection.cpp (collection_get_value_at, collection_count): Add
34579 2007-06-25 Jeffrey Stedfast <fejj@novell.com>
34583 * text.cpp: Rewritten to use the new MangoRenderer and
34584 MangoAttrForeground classes.
34586 * mango.cpp: New source file implementing a PangoRenderer and
34587 providing a new PangoAttribute for brushes.
34589 2007-06-25 Chris Toshok <toshok@ximian.com>
34591 * runtime.h: add decl for Panel::OnSubPropertyChanged.
34593 * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
34594 zIndex by invalidating the item's rectangle.
34595 (UIElement::OnSubPropertyChanged): add braces around all the if
34596 blocks for consistency.
34597 (Panel::OnSubPropertyChanged): if a child changes its z index we
34598 need to resort our visual collection.
34599 (Canvas::render): loop over the z sorted list of children instead
34600 of the default collection list.
34601 (item_init): just to be anal, cast the Zindex default value to
34604 x2007-06-25 Chris Toshok <toshok@ximian.com>
34606 * collection.cpp: keep a z-sorted list in VisualCollection,
34607 adding/removing elements from it when needed, and clearing it when
34608 the collection is cleared.
34610 * collection.h: add a virtual clear method so VisualCollection can
34611 override it. Also, add a z_sorted_list member to
34612 VisualCollection, so we can deal with the ZIndices of children.
34614 2007-06-24 Alan McGovern <amcgovern@novell.com>
34616 * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
34618 2007-06-24 Larry Ewing <lewing@novell.com>
34620 * runtime.cpp: rework size allocation and make toplevel Canvas
34621 items read the allocation->x and allocation->y offsets from the
34622 surface widget when computing their position.
34624 2007-06-24 Chris Toshok <toshok@ximian.com>
34626 * Makefile.am (libmooninclude_HEADERS): add collection.h
34627 (libmoon_la_SOURCES): add collection.cpp
34629 * collection.h, collection.cpp: new files. split out Collection
34630 and all the collection-related code from runtime.h/runtime.cpp.
34631 arguably the collections specific to certain elements should exist
34632 completely in those .cpp/.h files, instead of here.
34634 * runtime.h, runtime.cpp: remove collection stuff.
34636 * clock.h, animation.h, transform.h: #include collection.h
34638 * value.h, value.h.in: #include <string.h> here so we can stop
34639 requiring it for everyone else. really, though we should be using
34640 g_strcmp or something that's already pulled in from glib.
34642 2007-06-24 Chris Toshok <toshok@ximian.com>
34644 * Makefile.am (libmoon_la_SOURCES): add array.cpp
34645 (libmooninclude_HEADERS): add array.h
34647 * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
34649 * array.h, array.cpp: new files, split them out from
34652 2007-06-24 Chris Toshok <toshok@ximian.com>
34654 * Makefile.am (libmooninclude_HEADERS): add xaml.h
34656 * xaml.h: split this out from...
34658 * runtime.h: ... here.
34660 * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
34662 2007-06-24 Chris Toshok <toshok@ximian.com>
34664 * Makefile.am (libmooninclude_HEADERS): add control.h
34666 * control.h: split out class Control stuff...
34668 * runtime.h: .. from here.
34670 * runtime.cpp: #include control.h
34672 * control.cpp: same.
34674 2007-06-24 Chris Toshok <toshok@ximian.com>
34676 * runtime.h: add OnLoaded methods to UIElement, Panel, and
34679 * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
34681 (VisualCollection::Add): only invoke OnLoaded on the item if the
34682 closure (the parent of the collection) has been loaded.
34683 (VisualCollection::Insert): same.
34684 (Panel::OnLoaded): call OnLoaded on all our children, then chain
34686 (surface_attach): call canvas->OnLoaded instead of
34687 emit_loaded_events(canvas). also, don't use a special IS_CANVAS
34688 flag - just use the type system.
34689 (item_get_surface): get rid of the IS_CANVAS flag and just use the
34692 * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
34693 the real object before chaining up.
34695 2007-06-24 Larry Ewing <lewing@novell.com>
34697 * runtime.cpp: disable transparent surfaces while fixing the
34698 drawing offset problem.
34700 2007-06-24 Larry Ewing <lewing@novell.com>
34702 * brush.cpp: use cairo_create_similar rather than using an image
34705 2007-06-24 Chris Toshok <toshok@ximian.com>
34707 * runtime.cpp (VisualCollection::Add): only emit Loaded if the
34708 tree we're adding it to has already been loaded.
34710 2007-06-24 Larry Ewing <lewing@novell.com>
34712 * demo.cpp: add -trans flag to demo to make the toplevel transparent.
34714 2007-06-24 Larry Ewing <lewing@novell.com>
34716 * runtime.cpp: add comments to the new gtk functions.
34718 * runtime.h: expose surface_paint.
34720 2007-06-23 Miguel de Icaza <miguel@novell.com>
34722 * runtime.cpp: Since unrealize does not seem to be called when our
34723 widget is destroyed by Mozilla, we need to cleanup on destroy the
34724 tick event. This takes care of one of the plugin crashers.
34726 There are still others that I have to find out, I added some
34727 debugging prints for now.
34729 2007-06-24 Larry Ewing <lewing@novell.com>
34731 * runtime.cpp: derive from EventBox not drawing area so that we
34732 can use it as a quick method of switching back and forth between
34733 transparent and not. Add a method to let external code paint to a
34736 2007-06-23 Jeffrey Stedfast <fejj@gnome.org>
34738 * text.cpp (SetValue): Overridden to enforce Text strings not
34739 preserving any leading nor trailing whitespace (as defined in the
34742 2007-06-22 Jeffrey Stedfast <fejj@novell.com>
34744 * xaml.cpp (matrix_value_from_str): use delete[] to free the array
34745 of doubles instead of g_free() as it was allocated with new, not
34748 * text.cpp (Layout): D'oh, make sure to always init text/block
34749 width/height values. This fixes VideoBrush again.
34751 2007-06-22 Jeffrey Stedfast <fejj@novell.com>
34753 * mplayer.cpp: Initialize 'opened' state variable.
34755 * text.cpp (GetValue): Override DependencyObject::GetValue() so
34756 that we can special-case getting TextBlock::Actual[Width,Height]
34757 properties (this allows us to prolong re-calculating these values
34758 until after the user has set the values he's going to set -
34759 re-calculating on ever property change is too expensive.
34761 * runtime.h: Make DependencyObject::GetValue() virtual.
34763 2007-06-22 Jeffrey Stedfast <fejj@gnome.org>
34765 * text.cpp: Stubbed out the required virtual methods for Glyphs
34766 and attempted to make ActualWidth and ActualHeight calculated
34767 immediately in an attempt to get DrPopper working better.
34769 2007-06-22 Sebastien Pouliot <sebastien@ximian.com>
34771 * shape.cpp: Small hack to avoid calling Draw 2 times during render.
34773 2007-06-22 Chris Toshok <toshok@ximian.com>
34775 * xaml.cpp (key_spline_from_str): free up the point arrays from
34776 point_array_from_str after we use them.
34777 (xaml_set_property_from_str): same.
34779 2007-06-22 Chris Toshok <toshok@ximian.com>
34781 * value.cpp (Value): the copy ctor is definitely corrupting memory
34782 in the MATRIX case - we need to allocate the destination matrix.
34784 2007-06-21 Chris Toshok <toshok@ximian.com>
34786 * Makefile.am: not that anyone should be installing this yet,
34787 install the headers to $(includedir)/libmoon.
34789 2007-06-21 Jeffrey Stedfast <fejj@novell.com>
34791 * text.cpp: Reworked text layout/rendering logic - we now cache
34792 width/height info for each text string as well as the overall
34793 block width/height. This info is then used to align text strings
34794 on each line along the bottom edge (rather than along the top
34795 edge) of the line of text.
34797 * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
34799 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34801 * stylus.h|cpp: Add InkPresenter.
34802 * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
34803 * value.h, type.h|cpp: Updated.
34805 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34807 * animation.cpp: Register *KeyFrame::Value properties as nullable.
34808 * clock.cpp: Register TimelineMarker properties.
34810 2007-06-21 Jackson Harper <jackson@ximian.com>
34812 * xaml.cpp: When setting the x:Name also set the name property.
34814 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34816 * stylus.cpp|h: Added Stroke and DrawingAttributes.
34817 * runtime.h: All collections can now implement GetElementType.
34818 * value.h, type.h, type.cpp: Updated.
34820 2007-06-21 Rolf Bjarne Kvinge <RKvinge@novell.com>
34822 * stylus.cpp|h: Added.
34823 * runtime.cpp|h: Define and call stylus_init.
34824 * Makefile.am: Add stylus.cpp|h.
34825 * value.h, type.h, type.cpp: Updated.
34827 2007-06-21 Jackson Harper <jackson@ximian.com>
34829 * xaml.cpp: Add a global set of callbacks, so that all of the
34830 custom callbacks for a given parsing instance use the same
34831 methods. This needs to be encapsulated properly, but for now is
34834 2007-06-20 Chris Toshok <toshok@ximian.com>
34836 * animation.cpp, animation.h: KeyFrameCollection overrides
34837 Collection::Clear to clear its sorted list.
34839 * runtime.cpp, runtime.h: add overrideable Collection::Clear
34840 method, and move collection_clear's body into it.
34842 2007-06-21 Jackson Harper <jackson@ximian.com>
34844 * runtime.cpp|h: Don't return false on single element collections
34847 2007-06-21 Jeffrey Stedfast <fejj@gnome.org>
34849 * text.cpp: Use absolute font sizes, makes the fonts not so huge.
34851 2007-06-20 Jackson Harper <jackson@ximian.com>
34853 * xaml.cpp: Set namecopes earlier, and make sure to copy the
34854 namescope when we recreate a class using x:Class.
34855 - When we use x:Class reparse the element's attributes, so it can
34856 hook up to events and set properties.
34857 * runtime.cpp|h: When the Name property is set, register it with
34858 the proper NameScope.
34860 2007-06-20 Chris Toshok <toshok@ximian.com>
34862 * runtime.cpp, runtime.h: add rudimentary Visibility support. we
34863 only support Visible/Hidden really, and treat Collapsed as Hidden.
34865 * xaml.cpp (enum_from_str): use g_strcasecmp here.
34867 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34869 * shape.cpp|h: Implement caching of Path (this could be extended to
34871 * geometry.cpp|h: Notify on changes.
34873 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34875 * xaml.cpp: Don't allocate (and free) a copy of the PML before
34876 calling geometry_from_str.
34878 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34880 * shape.cpp: Fix some Stretch modes for paths. This can get very
34881 expansive, next step is to cache the cairo_path_t* in the Path and
34882 recompute it only on changes.
34884 2007-06-20 Chris Toshok <toshok@ximian.com>
34886 * xaml.cpp (is_valid_event_name): new function.
34887 (dependency_object_hookup_event): only allow valid events to be
34890 2007-06-20 Jackson Harper <jackson@ximian.com>
34892 * runtime.cpp|h: New method for finding an objects namescope.
34893 - Call an objects loaded event when it is added to a Collection
34894 - Some bits of namescope merging, these functions aren't called
34897 2007-06-20 Chris Toshok <toshok@ximian.com>
34899 * xaml.cpp (dependency_object_hookup_event): we need more than
34900 just the Loaded event.
34902 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
34904 * text.cpp (Run): Don't set default font values here... we need
34905 them to be unset if they aren't explicitly set by the user so that
34906 we can inherit font properties from our parent TextBlock.
34907 (Draw): Fixed to make Runs inherit unset font properties from the
34908 TextBlock at render-time. Also fixed to make sure we have a
34909 foreground brush to draw with... if unset, use the default brush.
34911 2007-06-20 Chris Toshok <toshok@ximian.com>
34913 * runtime.cpp (UIElement::render): make this print the classname
34914 like UIElement::getbounds() does.
34916 * runtime.h, runtime.cpp: make control_initialize_from_xaml take
34917 the xaml parser custom element callbacks.
34919 2007-06-20 Chris Toshok <toshok@ximian.com>
34921 * runtime.cpp (runtime_shutdown): set inited to false, since we
34922 want people to be able to call runtime_init again after this.
34924 * type.cpp.in (Type::RegisterType): allocate types if we need to.
34925 (Type::Shutdown): free types.
34927 * type.h.in (private): make the types array dynamically allocated.
34929 * type.h, type.cpp: sync
34931 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
34933 * text.cpp (TextBlock): Need to actually set ActualWidth and
34934 ActualHeight values.
34936 2007-06-20 Chris Toshok <toshok@ximian.com>
34938 * clock.cpp (Clock::Tick): if we hit our natural duration but our
34939 duration is Automatic, go to Fill mode, since we may have child
34940 clocks that started after us and need a chance to run their last
34943 2007-06-20 Jeffrey Stedfast <fejj@novell.com>
34945 * runtime.cpp (collection_iterator_move_next): If we can't iterate
34946 to the next item, don't set current = NULL.
34947 (dependency_object_get_name): New function needed for the binding.
34949 2007-06-20 Larry Ewing <lewing@novell.com>
34951 * runtime.cpp: use gdk_cairo helper functions and clip to the
34952 expose event region.
34954 * runtime.h: remove unused members.
34956 * media.cpp: use cairo_get_target rather than keeping track of
34959 2007-06-20 Jackson Harper <jackson@ximian.com>
34961 * xaml.cpp/runtime.h: Add one more callback, this one will hookup
34962 events to methods. So things like Loaded=CanvasLoaded will work.
34966 2007-06-20 Jackson Harper <jackson@ximian.com>
34968 * xaml.cpp: More verbose debug output with namespace lookup
34970 - Map in the default namespaces if we are unable to lookup the
34971 proper namespace name.
34973 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34975 * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
34976 or the mouse moving won't work.
34978 2007-06-20 Sebastien Pouliot <sebastien@ximian.com>
34980 * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
34981 assigned, in that case we get the extents of the fill.
34983 2007-06-20 Chris Toshok <toshok@ximian.com>
34985 * animation.cpp: um.. "oops".
34987 * xaml.cpp (xaml_init): enable the parsing of the color/point
34990 2007-06-20 Chris Toshok <toshok@ximian.com>
34992 * animation.cpp: guard against division by zero in the double
34993 keyframe GetCurrentValue method. I'll fix this method up some
34994 more and then report it to the other animation types.
34996 Also, add the Spline(Color,Point)KeyFrames.
34998 * clock.cpp, clock.h: fixes to get all this working again while
34999 still supporting the needed things from the last patch (like
35002 * transform.cpp (GetTransform): i hate like hell to have to do
35003 this, but if we scale by 0.0 cairo can't invert the matrix and
35004 then everything goes belly up. 0.00002 is the smallest number I
35005 found (0.00001 doesn't work, for instance) where cairo doesn't
35006 complain about the inverse stuff.
35008 * media.cpp (media_element_set_buffering_time): we have to use the
35009 hacky Value ctor here.
35010 (media_element_set_position): and here.
35012 * runtime.cpp (emit_loaded_events): new function to walk the tree
35013 and emit loaded events.
35014 (surface_attach): call emit_loaded_events here - the docs specify
35015 that Loaded is emitted after it's associated with the host but
35016 before it's rendered.
35017 (Canvas::render): don't emit Loaded here.
35018 (runtime_init): output a nice message here if you run cairo
35019 against a verion of cairo that you shouldn't be using.
35021 * type.h, type.cpp, value.h: resync.
35023 2007-06-20 Jackson Harper <jackson@ximian.com>
35025 * xaml.cpp: Improve the way we handle x:Class attributes failing
35028 2007-06-20 Jackson Harper <jackson@ximian.com>
35030 * xaml.cpp: Hookup attached properties in the property_from_str
35033 2007-06-19 Chris Toshok <toshok@ximian.com>
35035 * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
35036 (media_element_get_position): same.
35037 (media_init): mark BufferingTime and Position as TimeSpan's.
35039 2007-06-19 Chris Toshok <toshok@ximian.com>
35041 * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
35042 but this was necessary to get BeginTime's to be supported. It
35043 reintroduces the "popping" in the surface demo, though, and
35044 honestly I'm unsure how we can ever guarantee that enough ticks
35045 will have occured to be sure we won't see the initial state of the
35048 * animation.cpp: track clock api changes.
35050 * runtime.h: decl for FramworkElement::OnPropertyChanged.
35052 * runtime.cpp (EventObject::Emit): make a copy of the list before
35053 we start emitting, to keep us crashing if the list is modified
35054 while we're traversing it.
35055 (FramworkElement::OnPropertyChanged): invalidate on width/height
35058 * xaml.cpp: when parsing a TIMESPAN property, use
35059 timespan_from_str. This fixes the parsing of BeginTime
35062 * type.cpp.in: register TIMESPAN.
35064 * value.h.in: add a AsTimeSpan method, and special hacky
35065 constructor so the parser can construct a value of type TIMESPAN
35066 (which is problematic since it's typedef'ed to gint64.) Move the
35067 TimeSpan typedef here.
35069 * value.cpp: add the impl for that hacky ctor.
35071 * type.h.in: add a TIMESPAN kind.
35073 * type.h, value.h, type.cpp: sync.
35075 2007-06-19 Jackson Harper <jackson@ximian.com>
35077 * xaml.cpp: we need to new the points.
35079 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35081 * geometry.cpp: Add safety to ensure the number of points are
35082 valid before iterating on them.
35084 2007-06-19 Jackson Harper <jackson@ximian.com>
35086 * xaml.cpp: make sure to get all the points.
35087 - sneak peek at the exciting new attached property setting code.
35088 - improve error message
35089 - dont step off the end of the string when the trailing characters
35092 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
35094 * *.cpp: Updated to use the new List type.
35096 * runtime.cpp|h (Collection): Modified to use List instead of
35097 GList which made some code simpler, we get to take advantage of
35100 * demo.cpp (main): Removed surface_destroy() and
35101 runtime_shutdown() out of the delete_event callback (gtk timeouts
35102 could still fire after the gtk_main_quit() call it seems).
35104 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35106 * runtime.cpp: Enforce UIElement::ClipProperty when rendering
35109 2007-06-19 Jackson Harper <jackson@ximian.com>
35111 * xaml.cpp: Content properties can be inherited.
35113 2007-06-19 Jackson Harper <jackson@ximian.com>
35115 * xaml.cpp: Make sure that we have a previous figure.
35117 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35119 * geometry.cpp|h: Revert previous changes. That didn't work well
35120 with groups/collections.
35121 * shape.cpp: Path::Draw now process the path (find and susbtract
35122 origin) when Stretch requires it.
35124 2007-06-19 Jackson Harper <jackson@ximian.com>
35126 * xaml.cpp: Set the namescope right away, so FindName will work in
35127 element constructors.
35129 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
35131 * animation.cpp: Switched to use List instead of GList.
35133 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35135 * geometry.cpp|h: Change API so the Strech value is propagated from
35136 the shape to all the geometry figures. Fixed Stretch for LineGeometry,
35137 EllipseGeometry and RectangleGeometry.
35138 * shape.cpp: Path::Draw now supply the Stretch property value to
35139 all Geometry objects drawing methods.
35141 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35143 * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
35144 the caller responsbility to do so, if required (e.g. it isn't for
35147 2007-06-19 Jackson Harper <jackson@ximian.com>
35149 * xaml.cpp: Implement all the optional points on path markup.
35151 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35153 * shape.cpp: Fix Stretch for Polyline and Polygon.
35155 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
35157 * xaml.cpp: Updated to use a real linked list implementation.. for
35158 added uberness. Also reduces memory leakage.
35160 * mplayer.cpp: Stubbed out a few more things and can now return
35161 the video duration.
35163 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35165 * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
35166 property to fill inside Rectangle and Ellipse ctors.
35168 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
35170 * runtime.cpp (Insert): Make this use SharedAdd too, which I
35171 presume was the whole point.
35173 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35175 * shape.cpp: Fix Strech support for Rectangle (it behave more like
35176 Ellipse but that shows only with non squares).
35178 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
35180 * mplayer.cpp (audio_loop): Fixed muting to advance the correct
35181 number of pts and not hang forever in a g_usleep() (gah, the timer
35182 was a huge negative value).
35184 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35186 * clock.h: Added TimelineMarker.
35187 * type.h, type.cpp, value.h: Updated.
35189 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35191 * shape.h: Fix filling for Polyline. MS supports filling polylines,
35192 even unclosed ones.
35194 2007-06-19 Chris Toshok <toshok@ximian.com>
35196 * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
35197 s->cairo_xlib after recreating the xlib stuff. avoids a crash
35198 when resizing surfaces.
35200 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35202 * shape.cpp: Add Strech support for Ellipse.
35204 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35206 * shape.cpp: Add Strech support for Rectangle (only None is different).
35207 Add comments to Line as Stretch doesn't apply for this Shape.
35209 2007-06-19 Miguel de Icaza <miguel@novell.com>
35211 * runtime.cpp (Collection): Add new Insert method, and update all
35212 the callers that overwrote it. We probably need to cleanup
35213 everything that is doing virtual overrides and is a no-op
35215 2007-06-19 Chris Toshok <toshok@ximian.com>
35217 * runtime.cpp (clear_drawing_area): this method doesn't need to
35218 clean up the xlib cairo context/surface and the pixmap.
35220 There are two possibilities:
35222 1) the drawing area has been realized, which means we have xlib
35223 surface/context + pixmap. We're guaranteed to hit
35224 unrealized_callback before this method is called, so they will
35225 have already been freed.
35227 2) the drawing area has not been realized, which means we have no
35228 xlib surface/context + pixmap, and this method doesn't need to do
35231 2007-06-19 Jackson Harper <jackson@ximian.com>
35233 * runtime.h/shape.cpp: Fix typo.
35235 2007-06-19 Jeffrey Stedfast <fejj@novell.com>
35237 * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
35238 implementation and if one of our properties changed, notify our
35240 (Inline::OnPropertyChanged): Same.
35241 (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
35242 (TextBlock::Draw): Use our foreground brush directly and the same
35243 for run's foreground brush.
35245 2007-06-19 Miguel de Icaza <miguel@novell.com>
35247 * runtime.cpp: Implement collection iterators.
35249 2007-06-19 Chris Toshok <toshok@ximian.com>
35251 * xaml.cpp (timespan_from_str): don't walk off the end of the
35254 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35256 * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
35258 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35260 * animation.h|cpp: Add *_key_frame_new.
35262 2007-06-19 Jackson Harper <jackson@ximian.com>
35264 * xaml.cpp\runtime.h: Add a public function for setting
35265 properties, from strings. Basically a copy and paste of my
35266 set_attributes code. Eventually I should be able to merge the
35267 two, but they use different name lookup mechanisms right now.
35269 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
35271 * animation.cpp (Remove): Remove the KeyFrame from the sorted list
35272 before removing it from the collection (since it may be freed by
35273 Collection::Remove).
35275 2007-06-19 Miguel de Icaza <miguel@novell.com>
35277 * runtime.cpp: Add support for notifying the consumer that the
35278 surface has resized.
35280 Add support for resizing objects.
35282 2007-06-19 Jeffrey Stedfast <fejj@gnome.org>
35284 * brush.cpp (~VideoBrush): We want to detach from the media
35285 element, not ourselves. Doh.
35287 2007-06-19 Sebastien Pouliot <sebastien@ximian.com>
35289 * shape.h: Update comments about which shapes needs, or not, to
35290 provide a getxformorigin method.
35292 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35294 * media.h|cpp: Add media_base_new.
35296 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35298 * value.cpp|h|in: Inline the non-DependencyObject
35299 As* functions as well.
35301 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35303 * typegen.cs: Removed some dead code.
35304 * value.cpp.in: Deleted, not needed anymore.
35305 * runtime.cpp, value.cpp, type.cpp.in: Moved
35306 implementation of Value and Type into their own files.
35307 * type.cpp: Updated.
35309 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35311 * type.h, type.h.in: Created, moved declaration of Type here.
35312 * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
35313 references. Move the Value::As* into the header.
35314 * typegen.cs: Updated to cope with Kind changes.
35316 2007-06-19 Rolf Bjarne Kvinge <RKvinge@novell.com>
35318 * runtime.cpp|h, value.h.in: Remove current nullable code,
35319 it's easier to store an is_nullable flag in the registered
35320 property, and store NULL values in the objects hashtable.
35321 * xaml.cpp: Revert unnecessary fixes.
35322 * value.h: Updated.
35324 2007-06-19 Chris Toshok <toshok@ximian.com>
35326 * runtime.h: get rid of the specialized surface callbacks for
35327 mouse events. we can dispatch them directly to the UIElements.
35328 Change the EventObject signatures to permit an event/call data as
35329 well as the closure. add the sender object for kicks while we're
35332 * runtime.cpp: dispatch element events through the
35333 DependencyObject's events object.
35335 * animation.h, animation.cpp: update signatures for event
35338 * control.cpp (handle_button): track signature change.
35342 2007-06-18 Chris Toshok <toshok@ximian.com>
35344 * clock.cpp (TimeManager::Tick): add a lot of timing foo.
35345 (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
35346 we switching to the stopped state and our progress is 1.0 (that
35347 is, if we've finished).
35349 * animation.h, animation.cpp (Storyboard::Begin): rather heavy
35350 handed (but bulletproof) approach to making Begin work on a
35351 storyboard that has run its course - destroy the clock hierarchy
35352 and recreate it. Also, add a handler for the ClockGroup's
35353 "Completed" event so we can reflect that back to managed land.
35355 * runtime.h: add C functions to add/remove handlers from the
35356 EventObject inside a dep object.
35358 2007-06-18 Jackson Harper <jackson@ximian.com>
35360 * xaml.cpp: Set text context properties from char data. This
35361 allows you to do things like <Run>Hi I am some text</Run>. As far
35362 as I can tell, Run is the only element that allows this.
35364 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
35366 * shape.cpp|h: Fix Line and Ellipse getxformorigin.
35368 2007-06-18 Jackson Harper <jackson@ximian.com>
35370 * xaml.cpp: Now implement the smooth beziers correctly, much
35371 thanks to spouliot for figuring out the formula to reflect control
35374 2007-06-18 Chris Toshok <toshok@ximian.com>
35376 * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
35377 what the timemanager should do on a given tick, and add some
35378 #defines/logic to calculate the gtk delay from the desired
35379 framerate. Set the desired framerate to 20fps.
35381 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
35383 Instead of attaching to Brush::ChangedProperty, connect to NULL.
35385 * media.cpp (render): If the width/height are 0.0, then use the
35386 video's natural width/height.
35387 (OnPropertyChanged): chain up.
35389 * shape.cpp (OnPropertyChanged): Always chain up to our parent.
35391 2007-06-18 Chris Toshok <toshok@ximian.com>
35393 * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
35394 fixes setting of nullable property values.
35396 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35398 * runtime.cpp: Store NULL again in the property hashtable,
35399 but use the lookup_extended function to detect this and return
35400 a correct NULL value instead of the default value.
35402 2007-06-18 Chris Toshok <toshok@ximian.com>
35404 * runtime.cpp (RemoveHandler): more cleanups.
35406 2007-06-18 Chris Toshok <toshok@ximian.com>
35408 * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
35411 2007-06-18 Jackson Harper <jackson@ximian.com>
35413 * xaml.cpp: Implement path closing and ArcSegments.
35415 2007-06-18 Miguel de Icaza <miguel@novell.com>
35417 * runtime.cpp (SetValue): This looks painful, now
35418 DependencyObjects are stored inside the hash but they might
35419 contain a NULL. This seems bad.
35421 (Value): Do not delete null dependency objects.
35423 Remove this patch, and try demo.exe, enter/leave/enter, this
35424 crashes now, because the leave sets the fill to "null" and the
35425 enter then tries to access it
35427 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
35429 * brush.cpp: Do proper OnPropertyChanged proagation.
35430 (ImageBrush::OnPropertyChanged): Notify using the generic
35431 Brush::ChangedProperty.
35432 (VideoBrush::OnPropertyChanged): Same.
35433 (VideoBrush::OnSubPropertyChanged): Same.
35435 * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
35436 so we can listen for change notification.
35438 * runtime.cpp (UIElement): Same.
35441 * text.cpp (TextBlock): Same here (need to do it for Inlines too
35444 * media.cpp (media_base_new): Removed, you can't instantiate a
35446 (advance_frame): Optimization hack: don't invalidate if our
35448 (MediaElement::render): Respect opacity and stretch properties.
35450 2007-06-18 Jackson Harper <jackson@ximian.com>
35452 * xaml.cpp: We need to create new figures if we get a Move
35455 2007-06-18 Chris Toshok <toshok@ximian.com>
35457 * demo.cpp: use TimeManager::AddTickCall for the async file
35458 loading. This makes the image visible immediately for me, instead
35459 of requiring the animations be paused to see it.
35461 * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
35462 sorts to TimeManager. This way we can better control when the
35463 cross thread downloader calls happen, and keep them from affecting
35464 the frame rate, and also keep them from being starved by an
35465 overzealous demo.cpp.
35467 2007-06-18 Chris Toshok <toshok@ximian.com>
35469 * runtime.cpp (unrealized_callback): remove the render handler.
35470 (realized_callback): attach the render handler.
35471 (render_surface): a very simple render handler. We just force gtk
35472 to process all pending updates.
35474 * clock.cpp (TimeManager::Tick): as a temporary hack, have
35475 TimeManager emit the "render" event after every animation tick.
35476 We should add tuning to this method to achieve usable framerates
35477 without killing the cpu.
35479 * clock.h: make TimeManager subclass from EventObject so we can
35480 hook up to events on it.
35482 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
35484 * shape.cpp: getbounds gets bad results if stroke (or fill) isn't
35485 called. We create a new path so the bounds, for an invisible object,
35488 2007-06-18 Chris Toshok <toshok@ximian.com>
35490 * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
35492 2007-06-18 Jackson Harper <jackson@ximian.com>
35494 * xaml.cpp: Fix smooth quadratic bezier's.
35496 2007-06-18 Chris Toshok <toshok@ximian.com>
35498 * media.cpp, media.h (Image::render): on our first rendering,
35499 convert to using an xlib surface to speed up future redraws.
35501 2007-06-18 Chris Toshok <toshok@ximian.com>
35503 * runtime.cpp (UIElement::dorender): add this, and make everything
35504 that calls ->render call ->dorender.
35506 * control.cpp (render): call dorender on the realobject.
35508 * runtime.h: add STARTTIMER/ENDTIMER macros, and add
35509 UIElement::dorender which can be used to wrap render calls with
35510 debug info (in this case timer info.)
35512 * clock.h: add prototype for get_now().
35514 * clock.cpp (get_now): make this public, so we can use it for
35517 2007-06-18 Jackson Harper <jackson@ximian.com>
35519 * xaml.cpp: Implement Path Geometry parsing.
35521 2007-06-18 Jeffrey Stedfast <fejj@novell.com>
35523 * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
35524 MediaElement if we don't already have one.
35525 (VideoBrush::OnPropertyChanged): SourceName does not refer to a
35526 uri, instead SourceName refers to a MediaElement.
35528 * media.cpp: Implemented some more helper "setters", defaulted
35529 some more MediaElement property values to correct values, and
35530 implemented updating of both the CurrentState property and the
35533 * mplayer.cpp (Position): Implemented.
35535 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
35537 * media.cpp: Close the path after rendering the image.
35538 * shape.cpp: Avoid the filling operation in calls to getbounds. Also
35539 open and close a path before drawing normal (square) rectangles.
35541 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35543 * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
35544 C-style methods to access Type and DependencyProperty fields.
35545 In Type::IsSubclassOf don't take into account nullability.
35546 * animation.cpp, clock.cpp: Register nullable properties as such.
35548 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35550 * media.h|cpp: Add media_base_new.
35552 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35554 * value.h.in: Make checked_get_subclass handle null values. Include the
35555 Kind::*Null* values in the C# Kind.cs, and change their values to fit
35557 * value.h: Updated.
35559 2007-06-18 Miguel de Icaza <miguel@novell.com>
35561 * media.cpp (DownloaderEvent): If the Width/Height have not been
35562 set explicitly, provide them from the images (demo works, but it
35563 takes a while, due to the idle handler being too busy to be
35566 * runtime.cpp (Canvas::render): Cope with rounding from floats to
35567 ints, add 2, fixes the droppings in the surface.
35569 Include some of my debugging helpers (you sprinkle
35570 draw_grid in key places to see whats going on, useful to debug the
35571 bounding boxes and visually inspect if things are right.
35573 * media.cpp (getbounds): use the framework width/height not the
35574 pixbuf image size, this shrinks the size of the bounding box.
35575 (getxformorigin): Use it here too.
35577 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
35579 * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
35580 indicates if their use would be visible or not (e.g. opacity > 0.0).
35581 * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE).
35582 Don't Fill or Stroke if the brush is invisible (opacity == 0).
35584 2007-06-18 Marek Habersack <grendello@gmail.com>
35586 * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
35589 * ffvideo.cpp (ALIGN): as above.
35591 2007-06-18 Chris Toshok <toshok@ximian.com>
35593 * clock.cpp: simplify pausing and stopping a clock that has
35594 children by keeping track of the new state (the one the clock will
35595 take at the end of this tick). This is necessary because the
35596 parent clock doesn't actually stop until the end of the tick, so
35597 we still need to update child clocks after we've determined the
35598 parent clock should stop.
35600 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
35602 * runtime.cpp: properly remove items from the doubly-linked list.
35604 2007-06-18 Chris Toshok <toshok@ximian.com>
35606 * animation.cpp (AnimationStorage::~AnimationStorage): delete the
35608 (Storyboard::Begin): force a TimeManager tick after we've hooked
35609 up the clock, so that all the animations have proper values before
35610 the next render. Fixes the "popping" in the surface demo.
35612 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35614 * runtime.cpp: Changed DependencyObject::SetValue to never store
35615 a null value in the hashtable.
35617 2007-06-18 Sebastien Pouliot <sebastien@ximian.com>
35619 * brush.cpp: Refactor the pattern creation to allow caching.
35620 * media.cpp|h: Add caching of cairo_pattern_t to Image.
35622 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
35624 * runtime.cpp: use motion hints for smoother motion event handling.
35626 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
35628 * text.cpp|h: Runs now cache their own PangoFontDescription and
35629 PangoLayouts as an optimzation (seems to be very slight for simple
35630 us-ascii text, but might help enormously for more complex
35631 languages). Also added some FIXME thoughts.
35633 2007-06-18 Everaldo Canuto <ecanuto@novell.com>
35635 * downloader.cpp: Add missing downloader_notify_finished.
35637 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35639 * downloader.cpp: Only set dummy downloader functions if they
35640 aren't already set.
35642 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35644 * runtime.cpp: Add a few null checks.
35645 * downloader.cpp: Add initial dummy downloader functions to get
35646 meaningful messages if the downloader functions aren't initialized.
35648 2007-06-18 Rolf Bjarne Kvinge <RKvinge@novell.com>
35650 * typegen.cs: Special case a few things for DependencyObject,
35651 and make a few messages more informative.
35652 * runtime.h|cpp: Add a value_type field to Type, and a constructor
35653 to specify the value. Add a constructor to DependencyProperty that
35654 can specify default value and type (in the case the default value
35655 doesn't have the same type as the property). Changed
35656 DependencyObject::SetValue to never store a null value in the
35657 hashtable. In Value destructor check for null pointers in a few
35658 cases. Update all uses of Value.k to Value.GetKind.
35659 * type.cpp.in: Update to specify value_type information.
35660 * value.h.in: Implement nullable type handling in Value.
35661 * value.cpp, type.cpp, value.h: Updated.
35663 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
35665 * text.cpp (get_size_for_brush): Calculate width/height if they
35667 (Draw): Don't use the brush if we aren't going to render (this is
35668 needed so that we don't get into a recursive loop since we have to
35669 manually calculate width/height).
35671 2007-06-18 Jeffrey Stedfast <fejj@gnome.org>
35673 * text.cpp (get_size_for_brush): Implemented (since
35674 cairo_stroke_extents() won't work for us).
35676 * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
35677 (ImageBrush::SetupBrush): Same.
35679 * runtime.cpp (UIElement::get_size_for_brush): New method to get
35680 width/height needed by Brushes for scaling.
35682 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
35684 * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
35687 2007-06-17 Atsushi Enomoto <atsushi@ximian.com>
35689 * text.cpp : added text_block_set_font_source().
35691 2007-06-17 Miguel de Icaza <miguel@novell.com>
35693 * brush.cpp (brush_init): Create a BRUSH property called
35694 "FrameChange", it is internal and the sole use of it is so that
35695 upper layers that care about brush changes act on it by updating
35698 * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
35699 brushes only trigger an invalidate, there is no need to recompute
35702 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
35704 * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
35705 delete for a void pointer, it can only delete known class types.
35707 2007-06-17 Jackson Harper <jackson@ximian.com>
35709 * xaml.cpp: Implement x:Class, we can now load the Surface demo's
35710 XAML file, and it's custom Canvas class (things still don't work
35711 though because the custom canvas uses a downloader.)
35713 2007-06-17 Miguel de Icaza <miguel@novell.com>
35715 The surface rotate and translate controls should both work, and
35716 the enter/leave events are now correct.
35718 * runtime.cpp (UIElement::handle_motion, handle_button): Change
35719 the semantics to better match Silverlight. Now these methods
35720 should check if the mouse is inside their region before calling
35723 This is necessary because children of the canvas (and panel) are
35724 within the confines of the bounding box, but the canvas can be
35725 smaller than that. The canvas is a container whose boundaries
35726 are only used for paiting, children might be outside of these
35729 It is necessary in these cases to pass the events to all the
35730 children within the canvas bounding box and for each child to
35731 determine if the event was within its range.
35733 (inside_object): replaced the default implementation for
35734 FrameworkElements with a more performing version: instead of
35735 mapping the point and using cairo_in_stroke and in_fill operations
35736 on a rectangle with mapped coordinates, we map the coordinates and
35737 check against the rectangle.
35739 (Canvas::getbounds): if we are the topmost canvas, the boundaries
35740 are those from the Surface, not the ones that include the maximum
35741 extent from the children. Used to do precise mouse enter/leave.
35743 2007-06-17 Jeffrey Stedfast <fejj@gnome.org>
35745 * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
35746 when its not our property.
35748 * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
35750 * mplayer.cpp (GetSurface): Added.
35752 * text.cpp (text_init): Fixed to use RegisterFull for Froeground
35753 so we can specify Value::BRUSH as the default value type instead
35754 of it using SolidColorBrush as the type.
35756 2007-06-17 Chris Toshok <toshok@ximian.com>
35758 * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
35761 2007-06-17 Chris Toshok <toshok@ximian.com>
35763 * clock.cpp (Clock::TimeUpdated): remove a special case for the
35764 clock's duration being Automatic. Fixes infinite animation in
35767 * runtime.cpp (crossing_notify_callback): return type is gboolean,
35768 and make sure we always return something.
35770 2007-06-17 Miguel de Icaza <miguel@novell.com>
35772 Propagate changes from children of the transform up to our
35773 containers, this is done in several steps:
35775 * runtime.cpp (DependencyObject::Attach, Detach): New methods that
35776 are used to attach an object to a container and detach it. They
35777 were previously inlined inside SetValue.
35779 (Collection::Add, Remove): Attach and detach objects when they are
35782 * transform.cpp (Transform::OnPropertyChanged): if any class
35783 derived from Transform has one of its properties changed, it
35784 has a visual effect, propage this to the attacchees.
35786 (TransformGroup::OnSubPropertyChanged): Escalate here as well,
35787 this will catch the messages coming from anyone in the collection
35790 (TransformCollection::OnSubPropertyChanged): Buble the event up
35793 * runtime.cpp (handle_motion): Change the order in which we send
35794 the events to the UIElement, we should start at the topmost
35795 element, and have the toplevel canvas be last.
35797 2007-06-17 Sebastien Pouliot <sebastien@ximian.com>
35799 * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
35800 inside Image::render.
35801 * media.cpp: Use code from ImageBrush to render image with it's
35802 properties (e.g. Stretch)
35803 * transform.cpp: Update (commented) debug output.
35805 2007-06-17 Miguel de Icaza <miguel@novell.com>
35807 * runtime.cpp (GetValueNoDefault): This is necessary so we can
35808 distinguish a value that has been explicitly set from one that has
35812 * media.cpp (Image): use Framework::Width,Height for the image
35813 dimensions instead of the pixbuf width/height, used in extents and
35814 rotation computation.
35816 * runtime.cpp (Canvas::render): Set the clipping path on the
35817 identity matrix so we do not miss-clip.
35819 Render the canvas from 0, 0, fwidht, fheight, not the expose
35822 2007-06-16 Miguel de Icaza <miguel@novell.com>
35824 * runtime.cpp (Cairo::render): The canvas also needs to set the
35825 matrix and clear its background.
35827 (surface_resize): convenience entry point to resize a surface.
35828 Notice that this will resize the surface, but not the toplevel
35831 2007-06-16 Jackson Harper <jackson@ximian.com>
35836 * xaml.cpp: Use a callback for setting custom attributes in
35839 2007-06-16 Jeffrey Stedfast <fejj@gnome.org>
35841 * media.cpp: Implemented all the needed virtual methods for
35842 MediaElement to work, using my new MediaPlayer class.
35844 * mplayer.cpp|h: New class for playing media sources.
35846 * ffvideo.cpp: Removed from the build.
35848 2007-06-16 Miguel de Icaza <miguel@novell.com>
35850 Observation: either it is the surface, or something else is very
35851 slow, but entering the surface is quite slow right now to show the
35852 handles. Not sure what it could be.
35854 * runtime.cpp (OnPropertyChanged): We probably should catch the
35855 property changes here, and not in the Sub* variant of this thing,
35856 this will update the canvas properly now.
35858 (dump_hierarchy): useful bit to debug what is going wrong.
35860 (Canvas::get_xform_for): Do not apply extra
35861 transformations to the child other than the absolute_xform.
35863 (surface_attach): On attach we need to do a full invalidate, so
35864 the transformations are computed, otherwise it uses the defaults
35865 for the toplevel (zero), this fixes the atom.xaml issue.
35867 * control.cpp (get_xform_for): This is not proxied to the real
35868 object, this is proxied to the parent.
35869 (control_initialize_from_xaml): Set the parent link here.
35871 2007-06-16 Chris Toshok <toshok@ximian.com>
35873 * transform.cpp, transform.h, runtime.cpp, runtime.h,
35874 geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
35875 at removing all cached instance collections and using GetValue
35878 2007-06-16 Chris Toshok <toshok@ximian.com>
35880 * media.cpp (Image::SetSource): we want events even if we attach a
35881 downloader that's been started.
35883 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35885 * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
35886 will mess with the earlier filling.
35888 2007-06-16 Chris Toshok <toshok@ximian.com>
35890 * runtime.h, runtime.cpp: remove the instance cached
35891 Panel::children, use accessor to get it when we need it.
35893 * brush.h, brush.cpp: same for the GradientBrush::children
35896 2007-06-16 Chris Toshok <toshok@ximian.com>
35898 * runtime.h: make these const Rect&'s.
35900 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35902 * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35903 the Value::Kind of the object that was created so the managed side do
35906 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35908 * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35909 the element as the managed side needs (and defines) it.
35911 2007-06-16 Miguel de Icaza <miguel@novell.com>
35913 * control.cpp: Implement Control.
35915 * downloader.cpp: Implement a system to send various notifications
35916 as Chris wants his notifications and managed world wants the
35917 notifications as well.
35919 Should they ahve been separate? For now I just added a list of
35920 them. This code is turning uglier every minute.
35922 2007-06-16 Jackson Harper <jackson@ximian.com>
35924 * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
35926 - Handle expat errors a little better.
35928 2007-06-16 Sebastien Pouliot <sebastien@ximian.com>
35930 * runtime.h: Implement missing IntersectsWith and Intersection to fix
35933 2007-06-15 Chris Toshok <toshok@ximian.com>
35935 * runtime.cpp (Canvas::render): small optimization. only call the
35936 item's render method if its bounds actually intersects with the
35937 rectangle we're rendering. Also, clip to the bounding rectangle
35940 2007-06-16 Chris Toshok <toshok@ximian.com>
35942 * clock.cpp, clock.h: don't use a constant for the timeout in
35943 gtk_timeout_add, and add methods to add/remove the timeout.
35945 (ClockGroup::TimeUpdated): if we're paused or stopped,
35946 don't call child clock TimeUpdated methods at all. they always
35947 generate CurrentTimeInvalidated even when the time hasn't changed,
35948 which triggers redraws that don't need to happen.
35950 2007-06-16 Jackson Harper <jackson@ximian.com>
35952 * runtime.cpp|h: We still need C style base_ref/unref.
35954 * xaml.cpp: Takle a callback for the from_file method also.
35956 2007-06-16 Jeffrey Stedfast <fejj@gnome.org>
35958 * ffvideo.cpp (Stop): Implemented.
35959 (.ctor): init paused to false (maybe this is why video
35960 didn'talways work?).
35961 (.dtor): Stop() the video and unhook the timeout.
35963 * runtime.cpp: Implement Base::ref and Base::unref instead of
35964 doing it the c way.
35966 * *.cpp: Updated for above change.
35968 * shape.cpp (shape_set_stroke): Don't unref the old stroke.
35969 (shape_set_fill): Same.
35971 * text.cpp (text_init): Use a separate brush for TextBlocks and
35973 (text_block_set_foreground): Don't unref the old brush.
35974 (inline_set_foreground): Same.
35976 2007-06-15 Chris Toshok <toshok@ximian.com>
35978 * xaml.cpp: little leak fixes here and there.
35980 2007-06-15 Chris Toshok <toshok@ximian.com>
35982 * demo.cpp (delete_event): destroy the surface and shutdown the
35983 runtime before we quit, just to make finding leaks a little
35986 * ffvideo.cpp (MediaElementFfmpeg): re-order the
35987 close/g_io_channel_close calls to quiet down glib.
35989 * media.cpp: don't close the loader in DownloaderEvents. do it in
35990 the dtor for now, to keep from getting that stupid gdk warning.
35991 this is wrong, but at least it's quiet.
35993 * text.cpp: delete the color we initialize the solid color brush
35996 * animation.cpp, animation.h: remove the cached key_frames
35999 * runtime.h, runtime.cpp: clean up our cleanup a lot.
36001 in the copy constructor we actually need to make a copy (or
36002 ref in cases where we can) everything we store as a pointer in
36003 our union. This is to facilitate us destroying it in the
36006 in surface_destroy just delete the surface. move all the destroy
36007 code to the destructor. Also, in the destructor unhook from the
36008 gtk events, since we get an unrealize event as part of widget
36009 destruction, apparently.
36011 Add DependencyObject::Shutdown which destroys our properties
36012 hashtable. Create all the hashtables with _new_full so we can
36013 give free functions for keys/values. actually make use of them,
36014 and clean up the relevant destructors.
36016 Add a destructor for Type, and have the Type ctor take its
36017 arguments. free the name in the dtor. Same deal with _new_full
36018 for hashtable creation, and also add Type::Shutdown.
36020 (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
36021 and DependencyObject::Shutdown to free all our stuff.
36023 * clock.h, clock.cpp: add TimeManager::Shutdown.
36025 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
36027 * demo.cpp (gettime): Improved fps reporting.
36029 2007-06-15 Miguel de Icaza <miguel@novell.com>
36031 * media.cpp (SetSource): Make it so we use the data from a
36032 downloader that might have already finished.
36034 2007-06-15 Chris Toshok <toshok@ximian.com>
36036 * runtime.cpp: simplify refcounting a little more. we now have 3
36039 1. Value() holds a ref to its contained dependency object.
36040 This means we don't have to do anything special for
36041 anything stored in a DP.
36043 2. Collections hold a ref to their constituents.
36045 3. If you *must* cache an DO pointer in an instance field, you
36046 must ref/unref it properly. But really, you shouldn't need
36047 to cache it, and I'll likely go through and remove all the
36050 * media.cpp (media_element_set_markers): remove the ref/unref
36053 * animation.cpp: comment out some spew, and follow a safer pattern
36054 in OnPropertyChanged.
36056 * brush.cpp (OnPropertyChanged): safer pattern.
36058 * geometry.cpp (OnPropertyChanged): safer pattern.
36060 * runtime.h: make all these dtors virtual.
36062 * clock.cpp, clock.h: remove the cached child_timelines instance
36063 field to clean up some of the ref counting problems.
36065 2007-06-15 Miguel de Icaza <miguel@novell.com>
36067 * media.cpp (SetSource): Make it so we use the data from a
36068 downloader that might have already finished.
36070 We now accumulated data as we go.
36072 * downloader.cpp (downloader_get_response_text): Return
36075 2007-06-15 Jackson Harper <jackson@ximian.com>
36079 * xaml.cpp: Callback into managed code to create custom element
36082 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
36084 * media.cpp (media_base_new): Removed, not instantiable.
36085 (Image::getbounds): Need to set the absolute_xform matrix :)
36087 2007-06-15 Miguel de Icaza <miguel@novell.com>
36089 * media.cpp (Image::getxformorigin): Implement getxformorigin, so
36090 rotations are correct.
36092 (Image::getbounds): Implement getbounds correctly, the coordinates
36093 should be in device coordinates with the transform applied.
36095 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
36097 * demo.cpp (main): Add some Inlines to the TextBlock to test
36098 bounding box calculations.
36100 * text.cpp (OnPropertyChanged): If the property that changed is
36101 the Actual width/height, then don't invalidate anything - simply
36102 return (these are just cache values that only we can set
36104 (Draw): Keep track of the pixel width/height of the entire
36105 rendered TextBlock+Inlines.
36106 (getbounds): Use the cached width/height of the TextBlock+Inlines
36107 and draw a rectangle instead to improve performance.
36109 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
36111 * media.cpp|h: Add media_base_new.
36113 2007-06-15 Miguel de Icaza <miguel@novell.com>
36115 * Add destructors to classes that are caching DO collections and
36116 keeping refs to those, thanks to Chris Toshok for the pattern to
36119 2007-06-15 Chris Toshok <toshok@ximian.com>
36121 * media.cpp (Image::render): use the uielement's opacity when
36122 painting. Fixes the DrPopperSilverlight Bubble.xaml file.
36124 2007-06-15 Miguel de Icaza <miguel@novell.com>
36126 * runtime.cpp (UIElement): The problem was that:
36128 The ~UIElement destructor was setting the collection
36129 properties to NULL in an attempt to unref stuff (these
36130 are now automatically unrefed).
36132 This caused the hash table destructor to unref the values
36133 that were held in the collection.
36135 At a later point, since "triggers" was cached and
36136 OnPropertyNotify was called, we attempted to unref the
36137 value, but that cached value pointed to an object that had
36138 already been released.
36140 * Everywhere: remove duplicated code that got copy/pasted
36141 everywhere for tracking collections and caching values.
36143 This should help fixing the crashing problem, but I still need to
36144 review the rules for reference counting and keeping a cache of
36145 variables in instance fields.
36147 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
36149 * text.cpp (Draw): Now renders inlines.
36151 2007-06-15 Chris Toshok <toshok@ximian.com>
36153 * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
36156 * demo.cpp: notify the downloader of the image file size so that
36157 it'll generate a COMPLETED event for the Image.
36159 * media.h, media.cpp: make image downloading non-progressive (we
36160 only create the surface when the downloader notifies the download
36161 is complete), but gain something in return: images with alpha
36164 * downloader.h, downloader.cpp: add closure to event_notify, and
36165 expose the Event kind.
36167 2007-06-15 Miguel de Icaza <miguel@novell.com>
36169 * runtime.cpp (UIElement, Canvas): send events to the objects as
36170 well. My original test on orcas was buggy.
36172 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
36174 * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
36176 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
36178 * xaml.cpp (dependency_object_add_child): If the col_v collection
36179 value is NULL, create a new collection and add it to the
36182 * runtime.cpp: Added a generic collection_new() function which
36183 takes a Value::Kind to specificy which collection-type it should
36186 2007-06-15 Miguel de Icaza <miguel@novell.com>
36188 * downloader.cpp: Implement DownloadProgress property and event
36191 * runtime.h (DependencyObject::Is): new method, similar to C# is.
36193 * runtime.cpp (surface_repaint): We clear the background here
36194 again, to allow canvases to have transparent brushes.
36196 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
36198 * runtime.cpp: Panel.Background is NULL by default, which means it's
36199 transparent. This fixes Canvas inside Canvas.
36201 2007-06-15 Jackson Harper <jackson@ximian.com>
36203 * runtime.cpp|h: Implement some Inlines stuff that the parser will
36205 * xaml.cpp: Add some of the pieces for creating textblock inlines.
36206 - Added some TODO areas for creating late bound collections (maybe
36207 this should just be illegal??).
36209 2007-06-15 Jeffrey Stedfast <fejj@novell.com>
36211 * text.cpp: Have inlines cache their PangoFontDescription and
36212 added logic to render textblock inlines.
36214 2007-06-15 Alan McGovern <amcgovern@novell.com>
36216 * runtime.cpp|h: Added DependencyProperty.NameProperty
36218 2007-06-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
36220 * transform.cpp|h: Add Transform C constructor.
36221 * runtime.cpp: Better warning message.
36223 2007-06-15 Miguel de Icaza <miguel@novell.com>
36225 * runtime.cpp (surface_attach): Only hook up the events when we
36226 get a toplevel attached.
36228 * downloader.h: Drop the C++ API with a C proxy API, switch to a
36229 pure C API as we need this from the managed side anyways.
36231 * downloader.h: Move downloader defs into .h file
36233 Add a notification system for reporting the size of a stream, so
36234 we can do progress indication.
36236 * downloader.cpp: Move downloader to its own file.
36238 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
36240 * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
36241 (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
36242 * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
36243 will be removed in 1.0.
36244 * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
36245 * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
36248 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
36250 * text.cpp (text_init): Set more default values.
36252 * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
36253 we iterate thru them) and set the resulting list to NULL (in case
36254 we don't hold the last ref) before unreffing the children object
36255 (in case we do own the last ref).
36256 (EventTrigger::OnPropertyChanged): Same.
36257 (UIElement::OnPropertyChanged): Same.
36259 * transform.cpp (OnPropertyChanged): Same.
36261 * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
36262 (PathGeometry::OnPropertyChanged): Same
36263 (PathFigure::OnPropertyChanged): Same.
36265 * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
36268 (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
36269 (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
36270 (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
36272 2007-06-15 Sebastien Pouliot <sebastien@ximian.com>
36274 * brush.cpp: Complete ImageBrush.Transform
36275 * shape.cpp: Please at least one side of the lines.
36277 2007-06-15 Jeffrey Stedfast <fejj@gnome.org>
36279 * text.cpp (text_init): No longer should ref the foreground brush
36282 * xaml.cpp: Added support for Runs/LineBreaks
36284 * text.cpp: Implemented Run/LineBreak classes.
36285 (inline_new): Removed (can't instantiate this class).
36287 2007-06-15 Miguel de Icaza <miguel@novell.com>
36289 * runtime.cpp (~DependencyObject, free_value): unref all the
36290 values that are stored in the object on destruction
36292 * runtime.cpp: Add support for enter/leave events.
36294 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
36296 * text.cpp (getbounds): Set the actual width/height values to keep
36299 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
36301 * text.cpp (getbounds): Revert prior change.
36302 (getxformorigin): Same.
36304 * shape.cpp (getbounds): Revert prior change.
36306 * ffvideo.cpp (getbounds): Revert prior change.
36308 * runtime.cpp (update_xform): Revert my last change.
36309 (item_update_bounds): Same.
36311 2007-06-14 Jackson Harper <jackson@ximian.com>
36313 * xaml.cpp: Set content properties when adding child elements. We
36314 now no longer need to special case any elements except panel.
36316 2007-06-14 Jackson Harper <jackson@ximian.com>
36318 * xaml.cpp: I must have been very tired when I wrote that.
36320 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
36322 * media.h: Expose Image's Height and Width (required for ImageBrush)
36323 * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
36324 (yet) force an update of the drawing once the image is available.
36326 2007-06-14 Jeffrey Stedfast <fejj@gnome.org>
36328 * demo.cpp: Updated s/textblock/text_block/g
36330 * xaml.cpp: Don't register TextBlock twice.
36332 * ffvideo.cpp (getbounds): Can now depend on surface being set.
36334 * text.cpp: s/textblock/text_block/g
36335 (getbounds): Can now depend on surface being set.
36336 (getxformorigin): Same.
36338 * shape.cpp (getbounds): Can now depend on surface being set.
36340 * runtime.cpp (item_update_bounds): Don't update bounds if the
36341 surface hasn't been set yet.
36342 (update_xform): Same.
36344 2007-06-14 Jackson Harper <jackson@ximian.com>
36346 * xaml.cpp: Add keyspline parsing.
36348 2007-06-14 Jackson Harper <jackson@ximian.com>
36350 * value.h: This guy doesn't exist anymore, he is a
36351 DependencyObject now.
36353 2007-06-14 Jackson Harper <jackson@ximian.com>
36356 * runtime.cpp|h: We also need to update the DependencyObject when
36357 resolving PropertyPaths.
36359 2007-06-14 Jackson Harper <jackson@ximian.com>
36361 * runtime.cpp|h: New function that follows PropertyPath's to
36362 DependencyProperties.
36363 * animation.cpp: Use new function to resolve animation target
36366 2007-06-14 Jackson Harper <jackson@ximian.com>
36368 * runtime.cpp (GetDependencyProperty): If there is no table for a
36369 property, we still need to lookup the property in the parent
36370 chain (assumming inherit is true).
36371 - Fix some typos with types_by_name
36373 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
36375 * demo.cpp (main): Rotate our demo text inside a filled rectangle
36376 around the center of the text.
36378 * text.cpp (TextBlock.ctor): Initialise a cached
36379 PangoFontDescription that we will update when properties change.
36380 (TextBlock.dtor): Free our font/layout.
36381 (getbounds): Implemented correctly.
36382 (getxformorigin): Implemented.
36383 (Draw): Simplified since we don't need to create our layout/font
36384 anymore (just use the cached ones).
36385 (OnPropertyChanged): Implemented.
36387 2007-06-14 Miguel de Icaza <miguel@novell.com>
36389 * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
36390 RadialGradientBrush): Notify owners when changes happen in the
36393 This makes the demo test-color-animation.xaml work without fps.
36395 * runtime.cpp: Make Canvas use the Background property to render
36398 2007-06-14 Chris Toshok <toshok@ximian.com>
36400 * demo.cpp (main): create a namescope to attach to the canvas, and
36401 also make sure to add the storyboard to the tree someplace so that
36402 it can find the names of things.
36404 * xaml.cpp: create a namescope to attach to the top_element.
36406 * runtime.cpp (FindName): rework this to walk up the tree. Drop
36407 the global namescope.
36409 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
36411 * brush.cpp|h: Add ImageBrush functions, which delegates most of its
36412 work to Image (downloader).
36413 * media.cpp|h: Expose the cairo_surface_t that contains the image.
36415 2007-06-14 Chris Toshok <toshok@ximian.com>
36417 * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
36418 size from 1024 to 8192 (and make it an instance instead of stack
36419 variable). Also, add a return statement that will cause the idle
36420 handler to no longer be called when we get a write of 0 length.
36421 This might be wrong in the long term.
36423 * media.cpp, media.h: add cleanup methods for the Image class, and
36424 add a dtor as well.
36426 2007-06-14 Chris Toshok <toshok@ximian.com>
36428 * media.cpp (LoaderSizePrepared): fill in the initial state of the
36429 image to gray with black border.
36430 (LoaderAreaUpdated): invalidate the item.
36432 * media.h: fix the progressive image loading.
36434 2007-06-14 Chris Toshok <toshok@ximian.com>
36436 * demo.cpp: use the MediaBase::SourceProperty to set the image's
36439 * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
36440 for changes in MediaBase::SourceProperty and kick off the download
36441 and stop the currently running one.
36443 2007-06-14 Chris Toshok <toshok@ximian.com>
36445 * demo.cpp: track downloader api change.
36447 * media.cpp: track downloader api change.
36449 * runtime.h, runtime.cpp: the downloader's write function needs an
36450 offset as well as a length to work with mozilla's streaming api.
36452 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
36454 * demo.cpp (main): Draw some text
36456 * text.cpp (text_init): Set a default solid black brush for
36457 foreground properties on Inline/TextBlock objects.
36458 (Draw): Setup the Brush stuff before drawing.
36460 2007-06-14 Jackson Harper <jackson@ximian.com>
36462 * xaml.cpp: Add support for loading all implemented (and semi
36463 implemented) dependency object types.
36464 * text.cpp|h: C style constructors.
36466 2007-06-14 Chris Toshok <toshok@ximian.com>
36468 * animation.cpp (KeySpline): default should be 1,1 for
36471 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
36473 * xaml.cpp: Add support for Matrix (non-DO) type.
36475 2007-06-14 Chris Toshok <toshok@ximian.com>
36477 * runtime.cpp (downloader_write): add C-style downloader_write
36478 method so we can call into it from the binding.
36480 2007-06-14 Chris Toshok <toshok@ximian.com>
36482 * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
36483 type.cpp.in, value.h.in: make KeySpline subclass from
36484 DependencyObject like it should, and fix resulting fallout.
36486 2007-06-14 Miguel de Icaza <miguel@novell.com>
36488 * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
36489 catch cases of Top/Left being set on a child, this makes changes
36490 to the object after it has been created (adding/removing the
36493 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
36495 * brush.cpp|h: Much closer results for RadialGradients (but I still
36496 have a test case that fails). Also added Transform support for
36499 2007-06-14 Jackson Harper <jackson@ximian.com>
36501 * animation.h: C style constructors.
36502 * clock.cpp|h: C style constructors.
36503 * runtime.cpp|h: Follow proper naming convention for
36504 TimelineMarker C style constructors.
36506 2007-06-14 Chris Toshok <toshok@ximian.com>
36508 * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
36509 here, and made Downloader pluggable with a set of functions.
36511 * demo.cpp: use the pluggable nature of Downloader to put
36512 UnmanagedDownloader here (and call it FileDownloadState).
36514 * value.cpp, value.h, type.cpp: resync.
36516 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
36518 * text.cpp: Fixed Brush accessors for the NULL case.
36520 * media.cpp: Fixed accessors that could return NULL
36521 (media_init): init MediaBase and MediaElement items.
36523 2007-06-14 Jackson Harper <jackson@ximian.com>
36525 * animation.cpp: C style constructor.
36526 * media.cpp|h: Add some C style constructors.
36527 * xaml.cpp: Add parsing hooks for new components.
36529 2007-06-14 Chris Toshok <toshok@ximian.com>
36531 * demo.cpp: make one of the videos an image instead.
36533 2007-06-14 Jeffrey Stedfast <fejj@novell.com>
36535 * xaml.cpp: Fixed the font_widths and font_stretches maps to
36536 reflect the numeric enum values defined in text.h (and msdn docs).
36538 * text.h: Sync enum values to documented numeric values.
36540 2007-06-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
36542 * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
36543 Make all classes that inherit from DO constructable, and add
36544 missing C-style constructors.
36546 2007-06-14 Jackson Harper <jackson@ximian.com>
36548 * runtime.cpp|h: Hookup the resource collection.
36549 * xaml.cpp: Parse resource collections.
36551 2007-06-14 Chris Toshok <toshok@ximian.com>
36553 * type.cpp, value.h, type.h: resync these.
36555 * media.h, media.cpp: add naive Image class.
36557 * runtime.h, runtime.cpp: add some Downloader methods, and
36558 subclass Downloader with a *very* hackish UnmanagedDownloader
36559 class that just loads from files. Also add a "write_func"
36560 callback that the downloader can call when it has new data to hand
36563 2007-06-14 Chris Toshok <toshok@ximian.com>
36565 * animation.cpp: import an arc length calculator I found on the
36566 net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
36567 and use that for KeySpline::GetSplineProgress. The results don't
36568 match MS's exactly, though.
36570 2007-06-14 Rolf Bjarne Kvinge <RKvinge@novell.com>
36572 * geometry.cpp, geometry.h: Add collection constructors.
36573 * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
36574 * runtime.cpp|runtime.h: Implement collection add/remove methods.
36575 Add Downloader DPs.
36576 * media.cpp: Add MediaAttribute DP.
36578 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
36580 * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
36581 (as it cannot be globally applied). Added DP, and related functions,
36584 2007-06-14 Miguel de Icaza <miguel@novell.com>
36586 * Improve the destruction scenario to release the resources that
36587 we have acquired, we are now up to the point of stopping clocks
36588 properly, but more work is going to be needed in the long term to
36589 properly track refs and objects.
36591 Ensured that all virtual GetObjectType are flagged with virtual.
36593 * Makefile.am: Put runtime.cpp at the top, to improve
36594 compile/test cycle.
36596 2007-06-14 Sebastien Pouliot <sebastien@ximian.com>
36598 * brush.cpp|h: One step closer for RadialGradientBrush
36599 * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now
36600 render (shape-wise) correctly.
36601 * shape.cpp: Draw before setting the brush. This allows the brush
36602 setting code to ask for the extents to stroke/fill.
36604 2007-06-13 Chris Toshok <toshok@ximian.com>
36606 * animation.cpp (KeySpline::GetSplineProgress): reimplement this
36607 to return a percentage of the arc length of the bezier that is
36608 traversed when t = linearProgress, taking the algorithm from
36609 http://steve.hollasch.net/cgindex/curves/cbezarclen.html
36611 2007-06-13 Chris Toshok <toshok@ximian.com>
36613 * brush.h, geometry.h, animation.h, clock.h: add GetElementType
36614 collection overloads.
36616 * type.cpp: resync to track UIElement : Visual relationship.
36618 * runtime.h: add Collection::GetElementType, and add overloads
36619 (some commented out) for the collections listed. Also, fix
36620 UIElement's superclass to be Visual.
36622 * runtime.cpp (Add): make sure we're only adding subclasses of our
36625 2007-06-13 Chris Toshok <toshok@ximian.com>
36627 * clock.cpp (AddChild): just pass the child, unwrapped.
36629 * runtime.h: remove the Value* overloads for Collection::Add and
36630 Collection::Remove.
36632 * xaml.cpp (dependency_object_add_child): just pass the dependency
36635 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36637 * text.cpp: Implemented a ton of stuff...
36638 (text_init): Added.
36640 * runtime.cpp (runtime_init): Call text_init().
36642 2007-06-13 Miguel de Icaza <miguel@novell.com>
36644 * runtime.h (Collection): Since it seems that everything we have
36645 so far are collections of dependency objects, the code is now
36646 simplified and will also take refs and remove refs on destruction.
36648 The only reason to implement the Add/Remove methods is if you must
36649 do something as a hook during add/remove
36651 * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
36654 (OnPropertyChanged): Allow the value to be NULL, cope with that,
36655 we use this to clear all of our objects.
36657 2007-06-13 Chris Toshok <toshok@ximian.com>
36659 * xaml.cpp (xaml_create_from_str): make the from_str a little
36660 closer to from_file. fixes hooking up names when loading from
36663 2007-06-13 Chris Toshok <toshok@ximian.com>
36665 * runtime.cpp (runtime_init): start the time manager here.
36667 * demo.cpp (main): instead of here.
36669 2007-06-13 Jackson Harper <jackson@ximian.com>
36671 * xaml.cpp: Gracefull handling of error conditions. Being
36672 intentionally non strict about some things while we are
36673 developing (like unknown elements, and attributes, and missing
36676 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36678 * brush.cpp: Better, but still imperfect, RadialGradientBrush
36680 2007-06-13 Jackson Harper <jackson@ximian.com>
36682 * runtime.h: Add some of the error event handler args, so i can
36683 use these in the parser.
36685 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36687 * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
36688 (soptimsation, woot).
36690 * text.cpp: Implemented c wrappers for Inline
36692 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36694 * brush.cpp: Implemented LinearGradientBrush::SetupBrush
36695 * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
36696 support for LinearGradientBrush.
36698 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36700 * text.cpp: Stubbed out TextBlock and Glyphs
36702 2007-06-13 Jackson Harper <jackson@ximian.com>
36704 * xaml.cpp: GradientBrush is a Brush.
36706 2007-06-13 Miguel de Icaza <miguel@novell.com>
36708 * runtime.cpp (dependency_object_find_name): Add new wrapper
36710 2007-06-13 Chris Toshok <toshok@ximian.com>
36712 * animation.cpp, animation.h: add public storyboard methods for
36713 begin/pause/resume/seek/stop. also start in on the spline
36714 keyframe/KeySpline stuff.
36716 * type.cpp: resync.
36718 * value.cpp: resync.
36722 * value.h.in: add keyspline stuff.
36724 * type.cpp.in: add keyspline stuff.
36726 2007-06-13 Chris Toshok <toshok@ximian.com>
36728 * demo.cpp: a few changes - none of the animations run forever
36729 now. also, add some gtk events (button press/release/motion). we
36730 pause animations on press, resume them on release.
36732 * clock.cpp: keep track of the offset caused by pausing/resuming
36733 the clock from our parent's time.
36735 * animation.cpp: split out all the logic for finding the current
36736 (and previous) keyframes into
36737 KeyFrameCollection::GetKeyFrameForTime. Also, make the key frame
36738 collection maintain a separate sorted list of keyframes.
36740 2007-06-13 Jeffrey Stedfast <fejj@novell.com>
36742 * media.cpp (media_base_get_source): Implemented; use char*
36743 instead of Uri - we'll make the binding convert between the types.
36744 (media_base_set_source): Same.
36746 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36748 * runtime.cpp: Xlib and we are both defining Visual,
36749 so implement a workaround.
36751 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36753 * brush.cpp|h: Added code for LinearGradientBrush and partial setup
36754 for all gradient-related brushes (needs testing). Add all color
36755 definitions supported by XAML.
36756 * mkcolor.cs: Tool to generate colors from System.Drawing (as they
36759 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36761 * runtime.h: Add Visual.
36762 * value.cpp, value.h, type.cpp: Updated.
36764 2007-06-13 Jeffrey Stedfast <fejj@gnome.org>
36766 * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
36768 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36770 * media.h: Added MediaAttribute.
36771 * runtime.h: Added Downloader.
36772 * value.cpp, value.h, type.cpp: Updated.
36773 * typegen.cs: Copy Kind.cs to the correct directory.
36775 2007-06-13 Rolf Bjarne Kvinge <RKvinge@novell.com>
36777 * brush.cpp, brush.h, geometry.cpp: Fix property registration
36780 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36782 * brush.cpp|h: Fix Brush::RelativeTransformProperty and
36783 Brush::RelativeTransformProperty types.
36785 2007-06-13 Sebastien Pouliot <sebastien@ximian.com>
36787 * brush.cpp|h: Complete DependencyProperties for GradientBrush and
36788 add GradientStopCollection.
36789 * runtime.cpp|h: Remove code for GradientStopCollection.
36790 * xaml.cpp: Register new brush classes.
36792 2007-06-13 Miguel de Icaza <miguel@novell.com>
36794 * runtime.cpp: Various new events are now sent.
36796 2007-06-13 Jackson Harper <jackson@ximian.com>
36798 * xaml.cpp: When using the xaml_create_from_str we automatically
36799 add the default and x: namespaces.
36801 2007-06-12 Jeffrey Stedfast <fejj@gnome.org>
36803 * ffvideo.cpp: Fixed to subclass the new MediaElement class.
36805 * video.cpp: Removed.
36807 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36809 * brush.cpp|h: Added DependencyProperty for GradientBrush and
36810 GradiantStop. Added new brush-related enums. Add [g|s]etter functions
36811 for RadialGradient and BrushGradiantStop.
36813 2007-06-12 Jackson Harper <jackson@ximian.com>
36815 * xaml.cpp: Repsect namespaces.
36816 - Clean up code a little
36818 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36820 * brush.h: New. Brush related stuff.
36821 * brush.cpp: DependencyProperty for RadialGradientBrush
36822 * runtime.h: [Re]move brush stuff.
36823 * shape.h: Add include for brush.h
36824 * type.cpp, value.h, value.h: Add RadialGradientBrush type.
36825 * Makefile.am: Add brush.h to the build.
36827 2007-06-12 Jeffrey Stedfast <fejj@gnome.org>
36829 * media.cpp|h: Added to the build
36831 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36833 * transform.cpp|h: Complete MatrixTransform.
36834 * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
36837 2007-06-12 Miguel de Icaza <miguel@novell.com>
36839 * runtime.h (UIElement::inside_object): new routine that should
36840 return true if the given absolute x, y is inside the given object
36843 (UIElement::handle_motion): new routine that is called when a
36844 motion event happens, it should determine if it can handle the
36845 given event at x, y.
36847 (Surface): new callbacks, these are callbacks that will pass the
36848 notification of the event to managed code.
36850 * runtime.cpp (FrameworkElement): provide a default implementation
36851 for inside object that works for "squares" (things with widths and
36854 2007-06-12 Jeffrey Stedfast <fejj@novell.com>
36856 * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
36857 simply disable audio for that video. Temporary hack.
36859 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36861 * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
36863 2007-06-12 Jackson Harper <jackson@ximian.com>
36865 * xaml.cpp: Implement enums. This implementation is very naive,
36866 but works with the current Silverlight object model. Basically,
36867 we just index property names to enum maps. So a property name
36868 maps to a single enum type regardless of the type the enum is
36869 declared in. This works fine with the current silverlight object
36870 model, but in the future might need to be changed, if we get
36871 conflicting property names.
36873 2007-06-12 Jeffrey Stedfast <fejj@novell.com>
36875 * ffvideo.cpp: Fixed sound playback to not get that nasty
36876 reverb-like effect. Also switched to using SDL for audio.
36878 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36880 * transform.cpp|h: Implement SkewTransform.
36881 * type.cpp: Register new type SkewTransform.
36882 * value.cpp|h: Add SkewTransform.
36883 * xaml.cpp: Register DO for SkewTransform.
36885 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36887 * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
36890 2007-06-12 Jackson Harper <jackson@ximian.com>
36892 * xaml.cpp: Don't try to add properties to the panel.
36894 2007-06-12 Sebastien Pouliot <sebastien@ximian.com>
36896 * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
36897 * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
36898 * Makefile.am: Add rsvg.cpp|h to the build.
36900 2007-06-12 Jackson Harper <jackson@ximian.com>
36902 * xaml.cpp: Add parser for KeyTime structures.
36904 2007-06-12 Chris Toshok <toshok@ximian.com>
36907 (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36908 (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36909 (animation_init): make sure to initialize
36910 ColorKeyFrame::ValueProperty.
36912 * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
36914 2007-06-12 Jackson Harper <jackson@ximian.com>
36916 * animation.cpp|h: C style constructor for KeyFrameCollection.
36917 * xaml.cpp: Implement the KeyFrame types
36918 - Make the base types ghosts, despite what the docs say, they
36921 2007-06-12 Miguel de Icaza <miguel@novell.com>
36923 * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
36924 when we have reached someone that handles that property in the way
36927 2007-06-12 Jackson Harper <jackson@ximian.com>
36929 * xaml.cpp: Register the TriggerCollection so that
36930 TriggerCollections can be created using the explicit syntax.
36932 2007-06-12 Jackson Harper <jackson@ximian.com>
36934 * xaml.cpp: No longer need to special case EventTriggers. Remove
36935 some dead code (yippie!)
36936 * runtime.cpp: Unregister the target when removing from the
36939 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36941 * runtime.h: Implement Inlines.
36942 * value.cpp, value.h, type.cpp: Updated.
36944 2007-06-12 Jackson Harper <jackson@ximian.com>
36946 * runtime.cpp|h: Hook up the UIElement::Triggers and
36947 EventTrigger::Actions/RoutedEvent properly.
36948 * xaml.cpp: Remove some of the special casing for event triggers
36949 now that they are proper DependencyProperties.
36951 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36953 * typegen.cs: Now checks if classes that inherits DependencyObject
36954 implement GetObjectType.
36955 * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
36956 missing GetObjectTypes and fix a few that were returning the wrong
36959 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36962 - (DependencyObject::SetValue): Allow assigning an object of a
36963 more derived type than the defined property type. Change the
36964 attached_list code to handle NULL dependency_objects.
36965 - Delete types_init, it's generated now.
36966 - Delete Value:As[DependencyObjects], its generated now.
36967 * runtime.h: Added definitions for a few missing collection classes.
36968 * types.cpp[.in], value.cpp[.in], value.h.in: Added.
36970 * Makefile.am: Add types.cpp and value.cpp
36971 * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp,
36972 value.h and Kind.cs from the headers.
36974 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
36976 * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
36978 2007-06-12 Chris Toshok <toshok@ximian.com>
36980 * clock.h, clock.cpp, runtime.cpp, value.h: use a
36981 TimelineCollection to store child collections in TimelineGroup.
36983 2007-06-12 Chris Toshok <toshok@ximian.com>
36985 * animation.h, animation.cpp (animation_init): remove the
36986 clock.cpp property registration.
36987 (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
36988 attempt, calculate our timespan from our key frames.
36989 (Animation::GetNaturalDurationCore): return a 1 second duration,
36991 (UpdatePropertyValue): plug leak.
36993 * runtime.cpp (runtime_init): call clock_init.
36995 * clock.h, clock.cpp: largish pass at implementing support for
36996 Duration::Automatic in ClockGroups (where they query their child
36997 timelines to see how long they should make themselves). Also, add
37000 * xaml.cpp (timespan_from_str): correct math.
37002 2007-06-12 Jackson Harper <jackson@ximian.com>
37004 * xaml.cpp: Add a couple more of the animation elements.
37006 2007-06-12 Jackson Harper <jackson@ximian.com>
37008 * runtime.cpp|h: There is no public Triggers property.
37010 2007-06-12 Miguel de Icaza <miguel@novell.com>
37012 * runtime.cpp (DependencyObject::RegisterFull): Allow for
37013 properties to be flagged as attached, and only propagate the child
37014 notification to those those that care about it.
37016 2007-06-12 Rolf Bjarne Kvinge <RKvinge@novell.com>
37018 * Implement a mechanism to keep track of parents and notify
37019 parents of changes in attached properties.
37021 2007-06-11 Jackson Harper <jackson@ximian.com>
37023 * xaml.cpp: Add content properties, and handle collections that
37024 are content properties, by implicitly adding items to the
37027 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
37029 * runtime.cpp: Remove matrix initialization (to avoid double-inits in
37031 * transform.cpp: Add matrix initialization in TransformGroup::
37032 GetTransform. Makes the API safer :)
37034 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
37036 * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
37038 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
37040 * geometry.cpp|h: Add drawing of [Poly]LinesSegment and
37041 [Poly]BezierSegment. More than half of Sam Ruby's samples can work
37044 2007-06-11 Jeffrey Stedfast <fejj@novell.com>
37046 * ffvideo.cpp: Attempt to get video to be in sync with audio by
37047 using the audio pts as the target_pts.
37049 2007-06-11 Jackson Harper <jackson@ximian.com>
37051 * runtime.cpp: Register the collection types as derived from
37054 2007-06-11 Chris Toshok <toshok@ximian.com>
37056 * xaml.cpp (timespan_from_str): fix reading off the end of digits
37059 2007-06-11 Jackson Harper <jackson@ximian.com>
37061 * xaml.cpp: Implement some more collection loading. A lot of
37062 duplicate code here, so I should probably refactor things a bit,
37063 but will wait until I've seen how more collections are laid out.
37065 2007-06-11 Chris Toshok <toshok@ximian.com>
37067 * animation.h, animation.cpp: use KeyFrameCollection's for the
37068 *AnimationUsingKeyFrames key frame stuff, instead of GLists.
37070 * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
37072 2007-06-11 Jackson Harper <jackson@ximian.com>
37074 * xaml.cpp: Make the parents of collections the Collection ghost
37075 element. This is a first step in cleaning up collection creation
37078 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
37080 * transform.cpp: remove dead code.
37081 * xaml.cpp: Partial collection support for geometry.
37083 2007-06-11 Sebastien Pouliot <sebastien@ximian.com>
37085 * transform.cpp: Multiply each matrix in a TransformGroup (fix the
37086 open-clipart sample, at least the correct parts of the sample).
37087 * runtime.cpp: Always initialize the matrix in item_get_render_affine
37088 otherwise we'll end up with bad random results.
37090 2007-06-11 Rolf Bjarne Kvinge <RKvinge@novell.com>
37092 * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue
37093 overloads that takes strings as well as DP, GetDependencyProperty where
37094 it's possible to specify whether the parent type is searched for the
37095 property or not, and a HasProperty method
37097 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
37099 * geometry.cpp|h: Fix function names wrt type.
37100 * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
37101 and call update_xform. This fix the "atom" sample :)
37102 * transform.cpp: Fix Rotate and Scale around a center point.
37104 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
37106 * geometry.cpp: Add more precision to types.
37107 * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
37109 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
37111 * brush.cpp: Implement Opacity for SolidColorBrush.
37112 * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can
37113 access it's properties (e.g. Opacity in this case). Add uielement_
37114 [g|s]et_opacity functions.
37115 * shape.cpp: Supply the UIElement when setting up brushes.
37117 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
37119 * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than
37120 half the width|height.
37122 2007-06-10 Miguel de Icaza <miguel@novell.com>
37124 * shape.cpp (OnPropertyChanged): Implement this property for most
37125 shapes: if the property is set, we need to invalidate and
37128 * runtime.h (FullInvalidate): A method to perform a queue to
37129 redraw the underlying region, update the bounds and queue an
37130 update for the new region.
37132 * runtime.h (Base): make destructor virtual so that base_unref can
37133 call delete (Base *) p. Exposed by the managed code when the
37134 first base_unref ran for the first time :-)
37138 * runtime.cpp (surface_attach): invalidate the areas before and
37139 after, compute the bounds using item_update_bounds, not the
37140 getbounds method directly.
37142 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
37144 * xaml.cpp: Add PathFigure[Collection]/Segments support.
37146 2007-06-10 Sebastien Pouliot <sebastien@ximian.com>
37148 * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
37149 green unlike other basic colors (red/blue at 0xFF).
37150 * xaml.cpp: Don't assert on an empty collection.
37152 2007-06-10 Miguel de Icaza <miguel@novell.com>
37154 * runtime.cpp, runtime.h (BasicArray): New base struct for
37155 PointArray and double array, puts the count field at the beginning
37156 and avoids an extra block to be allocated (count and values are
37157 now on a single contiguous block).
37159 Introduce a refcount for the arrays, so that we can release those
37160 properly. Due to the nature of how we copied values before we
37161 had to leak the values, when the leak was plugged, we crashed.
37163 The refcount is there just because it was easy, we could clone if
37164 we wanted, but also I would like to keep the refcount there to
37165 ensure that the array of doubles is aligned on an 8 byte
37168 (double_array_new, point_array_new): New methods to create the
37171 (Value): Now free the arrays.
37174 2007-06-09 Sebastien Pouliot <sebastien@ximian.com>
37176 * geometry.cpp|h: Add/complete PathFigureCollection and
37177 PathSegmentCollection. Doesn't parse from xaml.
37178 * runtime.cpp, value.h: Add support for new classes.
37180 2007-06-09 Sebastien Pouliot <sebastien@ximian.com>
37182 * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
37183 But color rending is not yet correct in demo files.
37184 * runtime.cpp, value.h: Add support for GeometryCollection
37185 * xaml.cpp: Add support for GeometryGroup
37187 2007-06-09 Chris Toshok <toshok@ximian.com>
37189 * animation.h, animation.cpp, value.h, runtime.cpp: add
37190 ColorKeyFrame and it's linear/discrete subclasses, as well as
37191 ColorAnimationUsingKeyFrames.
37193 2007-06-09 Chris Toshok <toshok@ximian.com>
37195 * animation.h, animation.cpp, value.h, runtime.cpp: add the
37196 Discrete keyframes for point and double.
37198 2007-06-09 Chris Toshok <toshok@ximian.com>
37200 * genkindcs.sh: new file, a script to generate
37201 olive/class/agclr/Mono/Kind.cs.
37203 * value.h: add marker comments so that genkindcs.sh works. Also,
37204 remove the explicit value assignments to enum elements <
37205 DEPENDENCY_OBJECT. there's no need for it.
37207 2007-06-09 Chris Toshok <toshok@ximian.com>
37209 * demo.cpp (main): add in another animation, this one using
37210 keyframes, that moves a square around in a square, while animating
37211 its background color the same way as the other rectangles.
37213 * value.h, runtime.cpp: add in the keyframe types.
37215 * runtime.cpp (DependencyObject::DependenceyObject): fix a
37216 valgrind error - we shouldn't be "free"ing Values, since they're
37217 "new"ed. Add free_value and use that for the hash table value
37218 dtor, and delete them correctly.
37220 * animation.h, animation.cpp: add a lot of the keyframe animation
37221 stuff. DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
37222 the only tested configuration, though.
37224 * clock.cpp (everywhere): guint64->TimeSpan fixing.
37225 (TimeUpdated): turns out that not only does the progress go from
37226 1.0 to 0.0 when reversed, but current_time actually goes backward
37227 as well. this has the nice effect of actually simplifying this
37228 method substantially, since we can always compute progress as
37231 * clock.h: typedef TimeSpan to gint64 (switching from guint64
37232 everywhere), and update the api to use this.
37234 2007-06-09 Miguel de Icaza <miguel@novell.com>
37236 * runtime.h (value_color_from_argb): Temporary hack until we
37237 figure out how to marshal Colors properly, we are using the uint32
37238 constructor, we should figure out if this is what we want, or if
37239 we should go down the route of using doubles (C++ stores thinks as
37240 Doubles our managed API as bytes).
37242 2007-06-10 Jackson Harper <jackson@ximian.com>
37244 * xaml.cpp: Handle the TransformGroup default collection.
37245 - Add Value's to the collection
37247 2007-06-09 Jackson Harper <jackson@ximian.com>
37249 * transform.cpp|h: C style constructor for TransformGroup
37250 * xaml.cpp: Implement loading transform groups and transform
37253 2007-06-09 Jackson Harper <jackson@ximian.com>
37257 * transform.cpp|h: Impplement transform groups and transform
37260 2007-06-09 Jackson Harper <jackson@ximian.com>
37263 * runtime.cpp|h: Use the new collection classes for triggers and
37264 actions. These are unsettable, so don't register them as
37265 DependencyProperties.
37267 2007-06-08 Everaldo Canuto <ecanuto@novell.com>
37269 * runtime.cpp: In surface_destroy check for toplevel before unref
37272 2007-06-08 Chris Toshok <toshok@ximian.com>
37274 * animation.h: remove the huge whitespace gap after KeyTime, and
37275 remove the ifdef'ed out Nullable<T> template.
37277 * animation.cpp: remove the unused point_animation C api, and use
37278 the overloaded + operator on Color and Point when initializing
37279 "end" in GetCurrentValue for those animations. They're looking
37280 more and more similar.
37282 2007-06-08 Chris Toshok <toshok@ximian.com>
37284 * globally: move away from all uses of Value::u union. switch
37285 everything to using Value::As* methods, which do typechecking and
37288 * value.h: make the union private to catch anyone accessing it
37291 * runtime.cpp (IsSubclassOf): return true if type == super. Not
37292 strictly "subclass", but it makes this method a little more
37293 useful/efficient. Add As* methods for string, point arrays, and
37294 double arrays, and add nullable As* methods for the types which
37295 don't return pointers already.
37297 2007-06-09 Jackson Harper <jackson@ximian.com>
37299 * xaml.cpp: Parse time spans correctly.
37301 2007-06-08 Miguel de Icaza <miguel@novell.com>
37303 * runtime.h (UIElement): Remove user_xform_origin as a field, now
37304 we pull this from the DependencyObject as it should be.
37306 * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
37307 other properties that would trigger an invalidate/bounds
37310 (item_init): initialize the other properties that the managed code
37313 * shape.cpp, ffvideo.cpp: updated to use the
37314 RenderTransformOriginProperty in the computation of the center for
37315 the transformation.
37317 2007-06-08 Chris Toshok <toshok@ximian.com>
37319 * Makefile.am (libmoon_la_SOURCES): add value.h
37321 * runtime.h, value.h: move the Value structure to value.h, since
37322 it (and its required forward decls) have grown huge.
37324 * runtime.cpp: add all the Value::As* methods, yay for CPP.
37326 2007-06-08 Jeffrey Stedfast <fejj@novell.com>
37328 * ffvideo.cpp (queue_data): Replaced the sound code with my newest
37329 implementation, seems to play sound correctly now.
37331 2007-06-08 Chris Toshok <toshok@ximian.com>
37333 * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
37334 stuff here, to help relieve some of the pressure building up in
37335 animation.h/animation.cpp.
37337 2007-06-08 Chris Toshok <toshok@ximian.com>
37339 * animation.cpp: add some skeleton code for point keyframe
37340 animations, and reduce all the Double/Point/Color Animation
37341 GetCurrentValue() methods to much the same, using LERP and the
37342 operators defined in runtime.h.
37344 * runtime.cpp (types_init): register the new keyframe types.
37346 * runtime.h: add some new animation types to Value, and add
37347 operators for +, -, and * (scalar) for Color and Point to make the
37348 animation code a little more concise.
37350 * animation.h: add some new classes/structs for use in keyframe
37353 2007-06-08 Miguel de Icaza <miguel@novell.com>
37355 * runtime.cpp, runtime.h (Collection): Rework the collection to
37356 use abstract methods (gulp),
37358 (VisualCollection): New collection, derives from Collection, does
37359 the collection thing.
37361 (Panel.OnPropertyChanged): If our children collection is updated,
37362 take care of it here.
37364 (DependencyObject): use free instead of g_free as we are
37365 allocating strings with strdup.
37367 (Value): drop constructor that specified type, type is not part of
37370 * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
37371 track of types correctly.
37373 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
37375 * brush.cpp: Fix color formats argb and rgb (too dark).
37377 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
37379 * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
37380 in the integer ranges, and change Type's type hashtable to an array
37381 of types, indexed by Value::Kind. Also add Value::COLLECTION and
37382 update Collection to use it.
37384 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
37386 * shape.cpp|h: Add Path::CanFill as it depends on the Geometry
37387 object(s) being used.
37388 * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
37389 Points properties and some basic draw stuff too.
37391 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
37393 * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
37394 Remove the Value (DependencyObject, Kind) constructor,
37395 the type of the DependencyObject can be obtained directly
37396 from the DependencyObject itself now, and update all uses
37397 to the Value (DependencyObject) constructor.
37399 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
37401 * *.h, *.cpp: Remove objectType and SetObjectType from
37402 DependencyObject, make DependencyObject::GetObjectType virtual,
37403 and update all inheritors of DependencyObject to not use
37404 SetObjectType, but override GetObjectType.
37406 2007-06-08 Jackson Harper <jackson@ximian.com>
37408 * xaml.cpp: Add some type checks to ensure we are setting child
37409 properties to legal types.
37410 - explicitly set properties value types, Value now requires this.
37413 2007-06-08 Jackson Harper <jackson@ximian.com>
37415 * runtime.cpp: Initialize the surface to NULL
37416 - use UIElement as the type for flags
37418 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
37420 * shape.h: Don't waste time trying to fill lines.
37421 * shape.cpp: Fix dashes support. First reset between shapes and,
37422 second, handle cairo dislike of a single dash value of 0.0.
37424 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
37426 * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
37428 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
37430 * shape.cpp|h: Implement Polygon::Points aad Polyline:Points
37431 properties as DependencyProperty. Adjust their Draw methods.
37432 * runtime.cpp: Implement point_array_from_str.
37434 2007-06-08 Sebastien Pouliot <sebastien@ximian.com>
37436 * shape.cpp|h: Add DP support for StrokeDashArray (double*).
37437 * runtime.cpp|h: Add double* and Point* (array) support to Value.
37438 * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value
37439 kind for brushes to avoid runtime warnings.
37441 2007-06-08 Rolf Bjarne Kvinge <RKvinge@novell.com>
37443 * runtime.cpp, runtime.h: Implemented a type system that tracks
37444 types' name and parent type.
37446 2007-06-08 Miguel de Icaza <miguel@novell.com>
37448 * runtime.cpp (Panel): Make children a property of the panel so we
37449 can access it from the managed world.
37451 (Value): Add new constructor that takes a full type, need to
37452 discuss this with the team.
37454 2007-06-08 Jackson Harper <jackson@ximian.com>
37456 * animation.cpp|h: Implement BeginStoryboard
37457 * runtime.cpp|h: Implement event triggers
37458 - Fire a loaded event when we first render an element
37459 * xaml.cpp: Implement parsing and loading storyboard and begin
37460 storyboard as well as event triggers and some of the property
37461 types that go with these guys.
37463 2007-06-08 Miguel de Icaza <miguel@novell.com>
37465 * runtime.cpp (runtime_init): Add panel_init
37467 (panel_init): Register Children property (must still create the
37468 collections, that will be a new fight).
37470 2007-06-07 Miguel de Icaza <miguel@novell.com>
37472 * xaml.cpp (start_element_handler): For the top element, track the
37473 type that we loaded, so we can return this to our caller (needed
37474 for the managed interface).
37476 (XamlParserInfo): track also the Value::Kind of the top_element.
37478 (xaml_create_from_file, xaml_create_from_str): Both now can
37479 optionally return the type of the toplevel element.
37481 * runtime.cpp (Value): Switch Value to strdup/free.
37483 Use inited to prevent multiple initializations.
37485 2007-06-07 Chris Toshok <toshok@ximian.com>
37487 * demo.cpp (main): track more of the api axing.
37489 * animation.h, animation.cpp (Storyboard::Begin): return
37490 immediately if we've already got a root clock.
37491 (globally) continue axing unused C api.
37493 2007-06-07 Chris Toshok <toshok@ximian.com>
37495 * demo.cpp: track all the animation changes away from the C api,
37496 and also test out the from/by animation combination by making the
37497 X scaling only go From 1.0 By -0.5 (so it animates in the range of
37500 * animation.h, animation.cpp: lots of changes - get rid of many of
37501 the animation/timeline C api calls, since they're unnecessary for
37502 the binding. Implement the nullable property getter/setters as
37503 #defines since I didn't want to c&p all of them and make the
37504 obvious mistakes. While I'm at it, implement the thing I needed
37505 nullable typed values for - "by" animation support. Now you can
37506 specify any of the following combinations and get a usable
37507 animation: From+By, From+To, By, To. You can actually just put
37508 From as well, but it won't animate (since both start end end will
37509 be the same). The To property overrides the By property, if both
37512 * runtime.h, runtime.cpp: add an overload of
37513 DependencyProperty::SetValue which takes a Value*, to enable
37514 nullable types to be set. the existing SetValue method calls the
37515 new one with &value.
37517 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
37519 * brush.cpp: Fix comment.
37520 * shape.cpp: Reduce duplication.
37522 2007-06-07 Miguel de Icaza <miguel@novell.com>
37524 * runtime.h: Store Value.BOOL in an int32, simplifies my life.
37526 * runtime.cpp (dependency_object_set_value,
37527 dependency_object_get_value): Add C# callable method calls to
37528 control the properties.
37530 (dependency_property_lookup): Add a way of find dependency
37533 2007-06-07 Chris Toshok <toshok@ximian.com>
37535 * animation.cpp (TimeUpdated): comment out some spew.
37537 * runtime.cpp (SetValue): use the copy ctor, and fix != check for
37538 current_value and value.
37539 (Value::Value): add a copy ctor, which takes care of the g_strdup
37542 * runtime.h: add copy ctor for Value.
37544 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
37546 * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
37548 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
37550 * geometry.cpp: #if-out transforms, it crash the xaml samples
37551 * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
37553 2007-06-07 Chris Toshok <toshok@ximian.com>
37555 * animation.cpp: switch all the various linear interpolation
37556 expressions to using the LERP macro, and add the PointAnimation
37559 * animation.h: add PointAnimation.
37561 * runtime.h: add Value::POINTANIMATION.
37563 2007-06-07 Chris Toshok <toshok@ximian.com>
37565 * runtime.h (Value): add COLORANIMATION to the list of types.
37566 Also, add a Kind constructor so we can use that for nullable type
37567 default values in the ::RegisterProperty calls. That is,
37568 initializing the default to Value(Value::COLOR) gives you a null
37569 default value with the COLOR type.
37571 * runtime.cpp (Value): new Kind ctor.
37573 * animation.cpp/.h: add ColorAnimation.
37575 * demo.cpp (main): add a color animation that interpolates between
37576 Red and Blue for the SolidColorBrush.
37578 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
37580 * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
37581 without a cairo_save|restore pair (or without resetting it's original
37582 value). Anyway right now it works without any of that :)
37584 2007-06-07 Jackson Harper <jackson@ximian.com>
37586 * runtime.cpp|h: add event triggers.
37587 * xaml.cpp: parse event triggers.
37589 2007-06-07 Chris Toshok <toshok@ximian.com>
37591 * animation.cpp/.h (Clock): initialize duration here.
37592 (TimeUpdated): instead of getting it every time through this
37595 2007-06-07 Chris Toshok <toshok@ximian.com>
37597 * animation.h: make Duration::FromSeconds return numbers of the
37598 same magnitude as get_now().
37600 * animation.cpp (Clock): fix UMR.
37602 2007-06-07 Jackson Harper <jackson@ximian.com>
37604 * xamp.cpp: Oops, not sure how that happened. Set the property
37605 name correctly, not to the type name.
37607 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
37609 * geometry.cpp|h: Apply transform. Fix default values.
37611 2007-06-07 Miguel de Icaza <miguel@novell.com>
37613 * animation.cpp (get_now): The time computation was wrong, there
37614 was an extra "10" in there that made all computations go astray
37615 and in particular cause the large values for ScaleY, which made
37616 getboundingbox ridiculously slow.
37618 For debugging purposes: ScaleY was being set to
37619 131472940552.95215, which came from
37620 DoubleAnimation:GetCurrentValue which was computing this value
37621 from a busted clock.
37623 2007-06-07 Sebastien Pouliot <sebastien@ximian.com>
37625 * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
37626 Add basic code for the other geometry types.
37627 * runtime.cpp|h: Add basic implementation for point_from_str and
37629 * shape.h: Export some cairo helpers.
37630 * shape.cpp: Refactor drawing to reuse the code from geometry.
37631 * xaml.cpp: Add Point and Rect parsing.
37633 2007-06-07 Chris Toshok <toshok@ximian.com>
37635 * demo.cpp: make all the animation stuff work declaratively, and
37636 test some of the different repeatbehavior and autoreverse
37639 * animation.cpp: huge block of nasty code to determine our
37640 progress given the combinations of autoreverse and repeatbehavior.
37642 * animation.h: Add Duration stucture, add a few C api calls for
37643 getting/setting timeline properties.
37645 * runtime.h, runtime.cpp: add DURATION support to Value.
37647 2007-06-07 Jackson Harper <jackson@ximian.com>
37649 * runtime.cpp|h: Some pieces of the triggers framework.
37651 2007-06-07 Jackson Harper <jackson@ximian.com>
37653 * xaml.cpp: Handle repeat behaviors, lookup attached properties.
37655 2007-06-06 Chris Toshok <toshok@ximian.com>
37657 * animation.cpp, animation.h: add timeline_set_autoreverse.
37659 2007-06-06 Chris Toshok <toshok@ximian.com>
37661 * animation.h: add prototype for timeline_set_repeat_behavior.
37663 * animation.cpp (animation_init): register the RepeatBehavior
37665 (timeline_set_repeat_behavior): new function.
37667 * runtime.h: a better solution to enforcing types in the Value
37668 ctors - make Value (void*) private. this gives compilation errors
37669 at all usage points where you're passing an unrecognized pointer
37670 type. Also, add RepeatBehavior support to Value.
37672 * runtime.cpp: add repeatbehavior support to Value.
37674 * geometry.cpp: change all Value(pointer-to-struct) calls to
37675 Value(struct) calls.
37677 * transform.h: we need do define TransformGroup as a subclass of
37678 Transform, or the functions that SetValue a transformgroup fail to
37679 compile (since it's not a descendent of DependencyObject.)
37681 2007-06-07 Jackson Harper <jackson@ximian.com>
37683 * xaml.cpp: Get object element property setting working.
37685 2007-06-06 Chris Toshok <toshok@ximian.com>
37687 * runtime.h, runtime.cpp: add a special void* ctor to value so
37688 pointers aren't silently converted to bool (bad c++, bad!), and
37689 have that ctor output a warning message to the console, along with
37692 * brush.cpp: need to deref the Color* in the Value ctor.
37694 2007-06-06 Chris Toshok <toshok@ximian.com>
37696 * animation.cpp: new dump of the animation stuff. this is much
37697 closer in spirit and implementation to that of WPF's
37698 timing/animation system. it's not perfect yet, but it's much,
37701 2007-06-06 Chris Toshok <toshok@ximian.com>
37703 * runtime.h: make the point/color/rect copy constructors take a
37704 ref, not a pointer. also, make the value contructors for struct
37707 * runtime.cpp: make the value constructors for struct types
37710 * brush.cpp (brush_init): pass the Color by value.
37712 2007-06-06 Chris Toshok <toshok@ximian.com>
37714 * runtime.h, runtime.cpp: move the Value implementation (for
37715 everything but the operators) to the .cpp file.
37717 2007-06-06 Miguel de Icaza <miguel@novell.com>
37719 * runtime.h, runtime.cpp: Surface is no longer derived from
37720 Canvas, it now instead hosts a canvas, should avoid having two
37721 nested canvases for loading XAML files.
37725 Correct computation of the bounding box for shapes and videos.
37727 * shape.cpp: Do not pop the cairo state after draw and then call
37728 extents as the computation on extents is done with the current
37729 cairo context, not the cairo context that drew the data before
37730 popping (this would show up with thick brushes).
37732 * runtime.cpp: Add 2 instead of 1, as double to integer rounding
37733 can take two values (negative and positive).
37735 * cutil.cpp: Cut and paste cairo code here, it computes the proper
37736 bounding box from the extents using the current absolute matrix.
37738 * ffvideo.cpp (queue_data): Memory leak gone.
37740 2007-06-06 Jackson Harper <jackson@ximian.com>
37742 * xaml.cpp: Set brush attributes.
37744 2007-06-06 Jackson Harper <jackson@ximian.com>
37747 * transform.h: Need to register this base DependencyObject for the
37749 * geometry.cpp: use correct value kind for registering properties
37750 * runtime.cpp: Don't be strict about the type with properties that
37751 derive from DependencyObject, we can't be too strict here, because
37752 of inheritance the registered type BRUSH could be set to
37754 - register some properties with the correct type
37756 2007-06-06 Jackson Harper <jackson@ximian.com>
37759 * runtime.h: Staring to add triggers
37760 * shape.cpp: Use brush as our property kind
37762 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37764 * runtime.h: Add new types and SweepDirection enum.
37765 * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and
37766 LineSegment classes and [g|s]etter functions.
37768 2007-06-06 Miguel de Icaza <miguel@novell.com>
37770 * runtime.h: Move all the types into the Value::Kind enumeration
37771 so that we can have a shared type system.
37773 * demo.cpp (main): Allow loading a XAML file from the command
37774 line, for your testing pleasure.
37776 * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
37779 Move to cairo to render to the screen the contents
37780 of the buffer. ffmpeg and cairo do have the same RGBA format, it
37781 was actually the copy from this format to the screen using
37782 gdk_draw_pixbuf that failed: pixbuf expected the data in another
37783 format and there is no way to configure it.
37785 * runtime.cpp (surface_clear): use the cairo api as the surface is
37786 no longer living on the client buffer.
37788 (surface_destroy): update
37790 (create_xlib, realized_callback, unrealized_callback): When the
37791 widget is realized, create a cairo context
37793 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37795 * runtime.h: Add Value support for Point and Rect
37796 * geometry.cpp: Implement [g|s]etters for Point and Rect properties
37798 2007-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
37800 * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
37802 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37804 * shape.cpp|h, runtime.cpp|h: Remove the (now) useless
37805 set_prop_from_str methods since everything they handled is now
37806 moved into DependencyProperty.
37808 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37810 * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke
37811 brushes. Add getter functions for fill and stroke.
37813 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37815 * runtime.h: Call SetObjectType on Brush and SolidColorBrush
37817 2007-06-06 Rolf Bjarne Kvinge <RKvinge@novell.com>
37819 * runtime.cpp, runtime.h: Remove the default_values hashtable
37820 from DependencyObject, it's redundant since the default value
37821 is stored inside the DependencyProperty anyway.
37823 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37825 * demo.cpp: Adapted to API changes.
37826 * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
37827 DependencyProperty. Add brush initialization code.
37828 * runtime.cpp|h: Change Brush to inherit from DependencyObject.
37829 Add Color support to Value. Call brush initialization.
37830 * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
37831 * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
37832 from DependencyObject.
37834 2007-06-06 Jeffrey Stedfast <fejj@gnome.org>
37836 * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
37837 non-NULL before trying to scale.
37839 2007-06-06 Sebastien Pouliot <sebastien@ximian.com>
37841 * brush.cpp: Fix compiler warning.
37843 2007-06-06 Jackson Harper <jackson@ximian.com>
37845 * runtime.cpp/h: initialize xaml
37846 - Add canvas C style constructor
37847 - Make SolidColorBrush's Color public
37848 * shape.cpp: Comment out the set_prop... stuff, this code won't be
37849 used anymore, now that the xaml parser is using dependency objects
37852 * transform.cpp|h: Add some C style constructors
37853 * brush.cpp: Create colors from a string instead of solid brushes
37854 * xaml.cpp: Add in a known element tree, and move property setting
37855 into the xaml code, also added code for setting properties with
37856 property element syntax
37858 2007-06-05 Miguel de Icaza <miguel@novell.com>
37860 Add type checking on SetValue, RegisterProperty to avoid
37863 * runtime.cpp (SetValue): Add simple type checking
37864 (Register): Ensure that no empty values are passed.
37866 * runtime.h (DependencyObject): events, remove unused field.
37868 2007-06-05 Chris Toshok <toshok@ximian.com>
37870 * runtime.cpp: we need to maintain another hash table for
37871 DependencyProperties so we can return the actual property, not the
37872 default value, which is what GetDependencyProperty needs to do.
37873 (DependencyObject::FindName): implement this by either trying to
37874 use the namescope on this object or the global_NameScope (rather
37875 suboptimal, it's supposed to 'walk the logical tree' according to
37878 partially implement NameScope.
37880 * runtime.h: add NameScope, and add a uint64 Value. Also add
37881 FindName on DependencyObject.
37883 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37885 * shape.cpp|h: Add Shape's thickness and some dash support. Add more
37886 [g|s]etters for Shape using DependencyProperty.
37887 * demo.cpp: Add thickness and dashes to the rectangles.
37889 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37891 * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
37892 functions to retrieve the height and width of shapes (values defined
37893 in FrameworkElement).
37894 * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height
37895 and Width properties.
37896 * demo.cpp: Adjust to API changes.
37898 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37900 * shape.cpp: Remove (now) useless properties in Line.
37902 2007-06-05 Miguel de Icaza <miguel@novell.com>
37904 * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
37905 now have an absolute affine set for us beforehand.
37907 * runtim.cpp: on update_xform call the parent ::get_xform_for to
37908 obtain the base affine transform to use.
37910 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37912 * geometry.cpp|h: Use DependencyProperty for properties.
37913 * transform.h: Protect.
37915 2007-06-05 Chris Toshok <toshok@ximian.com>
37917 * runtime.h: call SetObjectType where we need it.
37921 * geometry.h: same.
37923 2007-06-05 Miguel de Icaza <miguel@novell.com>
37925 * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
37928 * runtime.cpp (item_set_transform): This routine was doing nothing
37929 but doing an invalidate of the region, updating the transform,
37930 updating the bounding box and re-invalidating the new area. Move
37931 that logic elsewhere (it was also ignoring the affine parameter
37934 Unify user_xform with the RenderTransform dependency property, now
37935 we always have a static absolute transformation in the UIElement.
37937 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37939 * shape.cpp|h: Update shape_init with correct values and implement
37942 2007-06-05 Chris Toshok <toshok@ximian.com>
37944 * animation.cpp (ClockTimeChanged): use the instance variety of
37945 GetDependencyProperty.
37947 * runtime.cpp (GetDependencyProperty): just call the static
37948 variety with our objectType.
37949 (SetObjectType): method to enable subclasses to set the object
37952 * runtime.h: add DependencyObject::SetObjectType, as well as the
37953 instance version of DependencyObject::GetDependencyProperty.
37955 * transform.h: call SetObjectType to identify this object.
37957 2007-06-05 Chris Toshok <toshok@ximian.com>
37959 * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
37961 2007-06-05 Chris Toshok <toshok@ximian.com>
37963 * runtime.h (Canvas): declare our dependencyproperties here.
37965 * runtime.cpp (canvas_init): actually assign the properties.
37967 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
37969 * runtime.cpp, runtime.h: Implement a DependencyProperty::
37970 GetDependencyProperty.
37972 2007-06-05 Chris Toshok <toshok@ximian.com>
37974 * runtime.cpp (OnSubPropertyChanged): remove the event handler for
37975 the render transform and use OnSubPropertyChange instead.
37976 (item_set_render_transform): clean this up substantially - the
37977 property system handles all the "event" stuff now.
37978 (item_get_render_transform): we need a getter now that this uses
37980 (NotifyAttacheesOfPropertyChange): new method, call
37981 OnSubPropertyChanged with both the attachee's property (the thing
37982 storing 'this') and the subproperty that changed.
37983 (SetValue): complicate the attachee stuff a bit, since we need to
37984 store both the object and the property it's storing the value in.
37985 (item_init): initialize RenderTransformProperty.
37987 * runtime.h: make UIElement subclass from DependencyObject. This
37988 flattens the hierarchy some from SL (which has Visual in between,
37989 but we have no Visual.)
37991 * transform.cpp (OnPropertyChanged): call
37992 NotifyAttacheesOfPropertyChange. Also, reindent some stuff.
37994 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
37996 * demo.cpp: Updated to use rectangle_set_radius_[x|y]
37997 * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
37998 * xaml.cpp: Updated for API change.
38000 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
38002 * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
38003 from DependencyObject.
38004 * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
38006 2007-06-05 Jeffrey Stedfast <fejj@gnome.org>
38008 * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
38009 we simply cannot play sound (or maybe there is no sound), either
38010 way, don't try to dereference the audio_codec pointer if it is
38011 NULL. Also wrapped audio setup in an #ifdef
38013 2007-06-05 Miguel de Icaza <miguel@novell.com>
38015 Implement the OnPropertySet stuff, builds on Toshok's first pass.
38017 Next stage: discuss with Toshok the migration to this awesome
38018 framework from Events ;-)
38020 * runtime.cpp (SetValue): when adding dependencyobjects track on
38021 the attached object the ownership.
38023 Notify all containers of a property change.
38025 * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
38026 use the property notification system for these.
38028 * runtime.h (DependencyObject): Add a "attached_list" gslist to
38029 keep track of all the objects where this particular
38030 DependencyObject has been attached to, to provide OnPropertyChange
38031 notifications (not hooked up yet).
38033 (Value): Introduce DependencyObject constructor.
38035 2007-06-05 Sebastien Pouliot <sebastien@ximian.com>
38037 * shape.cpp|h: Started moving properties to DependencyObject. Added
38039 * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
38040 * runtime.cpp: Added calls to shape_init and geometry_init
38041 * runtime.h: Added Rect structure and new DependencyObject types for
38042 shapes and geometry.
38043 * Makefile.am: Added geometry.cpp|h to source files.
38045 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
38047 * runtime.h: initialize Value to zero on construction.
38049 2007-06-05 Chris Toshok <toshok@ximian.com>
38051 * demo.cpp: abstract the cairo transformations away by using
38052 RotateTransforms.. and this is probably going to annoy some
38053 people, but make the normally stationary elements bounce between
38054 smaller and larger.
38056 * animation.h: make Clock subclass from DependencyObject.
38058 * animation.cpp (animation_init): assign the properties, don't
38059 just call Register.
38061 also, track the EventObject method name change.
38063 * runtime.cpp (item_set_render_transform): new method. unhook the
38064 old transform and hook up the new one. also, explicit set our
38065 transformation here.
38066 (SetValue): make this only do the work (and more importantly only
38067 call OnPropertyChanged) if the value is different.
38069 * runtime.h: shorten the names of the EventObject methods. Add
38070 operator== and operator!= to Value. Add an EventObject to
38071 DependencyObject to give us rudimentary event handlers. Add the
38072 render_transform "higher-level" transform into to UIElement.
38074 * transform.h: add the OnPropertyChanged override and rename
38075 transform_get_value to transform_get_transform.
38077 * transform.cpp (transform_init): oops. we need to actually
38078 assign the properties.
38079 (transform_get_transform): indent.
38080 (OnPropertyChanged): override this method to emit
38081 "TransformChanged".
38083 2007-06-04 Chris Toshok <toshok@ximian.com>
38085 * Makefile.am (libmoon_la_SOURCES): add animation and transform to
38088 * runtime.h: flesh out Value some, adding BOOL (has to be C++
38089 bool, not gboolean, or else it conflicts with int32), INT32,
38090 INT64, and STRING (char*).
38092 * runtime.cpp (runtime_init): call animation_init and
38095 * animation.cpp, animation.h, transform.h, transform.cpp: get
38096 these using the new dependency object/value foo, and get them
38099 2007-06-04 Miguel de Icaza <miguel@novell.com>
38101 * runtime.h: Make the "Base" refcounting class the base for
38104 * ffvideo.cpp: Set audio initialization to zero for now, so we can
38105 continue debugging.
38107 * runtime.cpp (Canvas): override render, in preparation for using
38108 attached properties. I get the feeling am going to regret not
38109 keeping the top/left attached properties somewhere else.
38111 (Value): introduce the discriminating union for values as
38114 (DependencyObject): use lower case name for properties.
38115 Take Value * instead of void *, this is so we can represent NULL
38116 values (is this a good idea Chris, or do we want to have a
38117 Value.Type.NULL enumeration value?
38119 Update hash table creation to g_free the result on hash table
38120 update and removal.
38122 (Event): Update indentation to be Linux-like instead of GNU like.
38124 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
38126 * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions
38127 to create them. Replace the "old" C1 constant in Ellipse::Draw with
38128 ARC_TO_BEZIER (now that I know where it comes from ;-)
38130 2007-06-04 Jeffrey Stedfast <fejj@novell.com>
38132 * ffvideo.cpp (queue_data): Got sound kinda sorta working...
38134 2007-06-04 Jackson Harper <jackson@ximian.com>
38136 * xaml.cpp: Give elements a type
38138 2007-06-05 Rolf Bjarne Kvinge <RKvinge@novell.com>
38140 * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
38142 2007-06-04 Chris Toshok <toshok@ximian.com>
38144 * animation.h, animation.cpp: initial pass at some of the
38145 animation stuff. doesn't build yet.
38147 2007-06-04 Chris Toshok <toshok@ximian.com>
38149 * runtime.cpp, runtime.h: add EventObject, a c++ only base class
38150 for managing events.
38152 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
38154 * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
38155 and added Draw methods to Polygon and Polyline.
38156 * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
38157 and match changes in header file.
38159 2007-06-04 Jackson Harper <jackson@ximian.com>
38161 * shape.cpp/h: width and height are properties of the
38164 2007-06-04 Jackson Harper <jackson@ximian.com>
38166 * shape.cpp/h: add ellipse_new
38167 - set width/height on ellipses (ellipsi ?) and draw them.
38168 * xaml.cpp: create ellipses, get zorder correct
38170 2007-06-04 Jackson Harper <jackson@ximian.com>
38172 * xaml.cpp: put in character data functionality, eventually we
38173 will need to add FrameworkElement methods for setting the default
38174 content element. See
38175 http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
38176 for more info on content properties.
38178 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
38180 * demo.cpp: Include shape.h and use a rounded-rectangle
38181 * runtime.h: Added FillRule and moved out Shapes.
38182 * shape.h: New. Moved all shapes from runtime.h and added new ones.
38183 * shape.cpp: Added Polygon and Polyline.
38184 * xaml.cpp: Include shape.h
38185 * Makefile.am: Add shape.h
38187 2007-06-04 Chris Toshok <toshok@ximian.com>
38189 * transform.cpp, transform.h: initial code for the transform
38190 objects. doesn't compile yet.
38192 2007-06-04 Jackson Harper <jackson@ximian.com>
38194 * demo.cpp: fix typo
38196 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
38198 * demo.cpp: Fix for API changes.
38199 * runtime.h: Add FrameworkElement, other Shape properties and move
38200 around some properties to match the managed definitions.
38201 * shape.cpp: Add setters for new Shape properties and move properties
38202 parsing to match managed definitions.
38203 * xaml.cpp: Fix for API changes.
38205 2007-06-04 Sebastien Pouliot <sebastien@ximian.com>
38207 * shape.cpp: Don't typecast doubles into ints.
38209 2007-06-04 Jackson Harper <jackson@ximian.com>
38212 * xaml.cpp: Implement function that allows you to load xaml from a
38214 * demo.cpp: add a very small xaml demo
38216 2007-06-04 Jackson Harper <jackson@ximian.com>
38218 * xaml.cpp: remove old no longer used function.
38219 - track whether or not we are adding to a panel instead of surface
38220 * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
38222 2007-06-04 Jackson Harper <jackson@ximian.com>
38224 * shape.cpp: Add new methods to allow shapes to have their
38225 properties filled in from text values.
38227 * brush.cpp: Start work on allowing solid color brushes to be
38228 created from strings.
38230 * runtime.cpp: stub in methods for setting properties on canvas
38231 and UIElements (these had some meat but I am removing it now that
38232 some of the names are updated, will put back later).
38234 * runtime.h: add some methods and functions for XAML parsing.
38236 * xaml.cpp: Initial implementation of the XAML parser.
38238 2007-06-03 Miguel de Icaza <miguel@novell.com>
38240 * runtime.cpp (Collection, Panel): The beginning of an API to
38241 encapsulate collections that we will expose to the unmanaged
38244 This should be the backend for the base collection class in agclr
38245 for the strongly typed types.
38247 The idea is to have the MS.Internal.Collection<T> be a proxy that
38248 contains an IntPtr pointer to the C++ Collection instance and map
38249 the various add/remove methods to it.
38251 The immediate goal is to be able to do from C#:
38253 Rectangle r = new Rectangle ();
38254 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
38255 Canvas.Children.Add (r);
38257 2007-06-02 Miguel de Icaza <miguel@novell.com>
38259 Implement support for the render origin.
38261 * runtime.cpp (item_invalidate): add one to cope with the rouding
38262 from floats to ints (fixes some trailing junk).
38264 Item: redo the affine transformation setup to support both the
38265 render_transform_origin property and avoid recomputing all of this
38266 on each repaint request.
38268 * ffvideo.cpp: Changed the code to do the actual video decoding on
38269 the main thread so we can put all the video and audio in the
38270 queues before we start rendering.
38272 Failed attempts at getting audio to work.
38274 * Everywhere: renamed Item to UIElement to better match the actual
38275 class hierarchy that we will be exposing.
38277 2007-06-01 Jackson Harper <jackson@ximian.com>
38279 * shape.cpp: Fix typo.
38281 2007-06-01 Miguel de Icaza <miguel@novell.com>
38283 * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
38284 notify a special function (callback_video_inited). Makes me
38285 wonder if I should do the same for the new-frame call
38287 Initialize the cairo surface on the callback_video_inited routine
38288 instead of doing this on the decoder thread (that was a mistake).
38290 This solves the misterious case of the video that randomly did not
38293 2007-05-29 Miguel de Icaza <miguel@novell.com>
38295 * video.cpp (load_next_frame): reimplement the video play back
38296 logic so that it will now properly paint the proper frame on the
38299 Add logic to skip frames if video is playing back too slowly, and
38300 to resume playback when new frames are ready.
38302 Currently its computing the delay using the n_frame_rate field
38303 (which no sample uses, but I could not find any other way of
38304 estimating the frame rate other than this.
38306 It works at least with some sample streams that I have with 30 fps
38309 * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
38310 and handle exposes in the runtime, not in the demo. Show the
38311 widget (thats why I was not getting the expose events on the
38314 2007-05-26 Miguel de Icaza <miguel@novell.com>
38316 * runtime.cpp (Brush, SolidBrush): Introduce brushes.
38318 (Shape): introduce reusable drawing framework for shapes, not
38321 (Line): introduce second user besides rectangles.
38323 Remove agg test code.
38325 (Group::getbounds): implement.