void CXTPMarkupUIElement::InvalidateMeasureOverride(CXTPMarkupDrawingContext* pDC)
{
	if (!m_bMeasureInProgress && !m_bNeverMeasured)
	{
		m_bMeasureDirty = TRUE;
		m_bArrangeDirty = TRUE;

		CSize sz = GetDesiredSize();

		Measure(pDC, m_szPreviousAvailableSize);

		if (sz != GetDesiredSize())
		{
			m_bMeasureDirty = TRUE;
			m_bArrangeDirty = TRUE;

			CXTPMarkupUIElement* pParent = MARKUP_DYNAMICCAST(CXTPMarkupUIElement, GetVisualParent());
			if (pParent)
			{
				pParent->InvalidateMeasureOverride(pDC);
			}
			else if (m_pMarkupContext)
			{
				m_pMarkupContext->OnInvalidateArrange(this);
			}
		}
		else
		{
			Arrange(m_rcFinalRect);
			InvalidateVisual();
		}
	}
}
Example #2
0
void
Control::SetVisualParent (UIElement *visual_parent)
{
    if (GetVisualParent () != visual_parent) {
        FrameworkElement::SetVisualParent (visual_parent);
        providers.isenabled->SetDataSource (GetLogicalParent ());
    }
}
Example #3
0
void
Canvas::OnPropertyChanged (PropertyChangedEventArgs *args, MoonError *error)
{
	if (args->GetProperty ()->GetOwnerType() != Type::CANVAS) {
		Panel::OnPropertyChanged (args, error);
		return;
	}

	if (args->GetId () == Canvas::TopProperty 
	    || args->GetId () == Canvas::LeftProperty) {
		if (GetVisualParent () == NULL) {
			UpdateTransform ();
			InvalidateArrange ();
		}
	}
	NotifyListenersOfPropertyChange (args, error);
}
Example #4
0
File: media.cpp Project: snorp/moon
Size
Image::ComputeActualSize ()
{
	Size result = MediaBase::ComputeActualSize ();
	UIElement *parent = GetVisualParent ();
	ImageSource *source = GetSource ();
	
	if (parent && !parent->Is (Type::CANVAS))
		if (ReadLocalValue (LayoutInformation::LayoutSlotProperty))
			return result;
	
	if (source && source->GetSurface (NULL)) {
		Size available = Size (INFINITY, INFINITY);
		available = ApplySizeConstraints (available);
		// FIXME - Propagate properly
		MoonError error;
		result = MeasureOverrideWithError (available, &error);
		result = ApplySizeConstraints (result);
	}

	return result;
}