BOOL CXTPMarkupKeyboardNavigation::OnWndMsg(UINT /*message*/, WPARAM /*wParam*/, LPARAM /*lParam*/, LRESULT* /*pResult*/) { // NotImplmeneted return FALSE; #if 0 if (message == WM_SETFOCUS) { if (m_pLastFocused && !m_pFocused) { Focus(m_pLastFocused); MARKUP_RELEASE(m_pLastFocused); } } if (message == WM_KILLFOCUS) { if (m_pFocused) { m_pLastFocused = m_pFocused; MARKUP_ADDREF(m_pLastFocused); Focus(NULL); } } if (message == WM_KEYDOWN) { ProcessInput((UINT)wParam); } return FALSE; #endif }
void CXTPMarkupKeyboardNavigation::Focus(CXTPMarkupInputElement* /*pInputElement*/) { // NotImplmeneted return; #if 0 if (!m_pMarkupContext->m_hContextWnd) return; if (m_pFocused == pInputElement) return; if (m_pFocused) { m_pFocused->SetValue(CXTPMarkupInputElement::m_pIsKeyboardFocusedProperty, NULL); MARKUP_RELEASE(m_pFocused); } m_pFocused = pInputElement; if (m_pFocused) { m_pFocused->SetValue(CXTPMarkupInputElement::m_pIsKeyboardFocusedProperty, CXTPMarkupBool::CreateTrueValue()); MARKUP_ADDREF(m_pFocused); ::SetFocus(m_pMarkupContext->m_hContextWnd); } #endif }
void CXTPMarkupInputElement::SetPropertyObject(CXTPMarkupBuilder* pBuilder, CXTPMarkupDependencyProperty* pProperty, CXTPMarkupObject* pValue) { if (pProperty->IsEvent()) { CXTPMarkupContext* pMarkupContext = GetMarkupContext(); if (!pMarkupContext) { pBuilder->ThrowBuilderException(_T("Markup Context is NULL")); } LPCWSTR lpszDelegate = (LPCWSTR)*((CXTPMarkupString*)pValue); CXTPMarkupDelegate* pDelegate = pMarkupContext->LookupDelegate(lpszDelegate); if (!pDelegate) { pBuilder->ThrowBuilderException(CXTPMarkupBuilder::FormatString(_T("'%ls' delegate not found"), (LPCTSTR)lpszDelegate)); } AddHandler((CXTPMarkupRoutedEvent*)pProperty, pDelegate); MARKUP_RELEASE(pValue); MARKUP_ADDREF(pDelegate); return; } CXTPMarkupObject::SetPropertyObject(pBuilder, pProperty, pValue); }
void CXTPMarkupInputElement::FireTriggers(CXTPMarkupDependencyProperty* pProperty, CXTPMarkupObject* pNewValue) { BOOL bChanged = FALSE; int i; CMap<CXTPMarkupDependencyProperty*, CXTPMarkupDependencyProperty*, CXTPMarkupObject*, CXTPMarkupObject*> mapOldValues; if (m_pActiveTriggers) { for (i = m_pActiveTriggers->GetCount() - 1; i >= 0; i--) { CXTPMarkupTrigger* pTrigger = m_pActiveTriggers->GetItem(i); if (pTrigger->GetTriggerProperty() == pProperty) { if (!pTrigger->GetTriggerValue()->IsEqual(pNewValue)) { CXTPMarkupSetterColection* pSetters = pTrigger->GetSetters(); for (int j = 0; j < pSetters->GetCount(); j++) { CXTPMarkupSetter* pSetter = pSetters->GetItem(j); CXTPMarkupDependencyProperty* pSetterProperty = pSetter->GetSetterProperty(); CXTPMarkupObject* pOldValue = m_pTriggerProperties->Lookup(pSetterProperty); CXTPMarkupObject* pTempValue; if (!mapOldValues.Lookup(pSetterProperty, pTempValue)) { MARKUP_ADDREF(pOldValue); mapOldValues.SetAt(pSetterProperty, pOldValue); } m_pTriggerProperties->Set(pSetterProperty, NULL); } m_pActiveTriggers->Remove(i); bChanged = TRUE; } } } } if (m_pStyleCache) { bChanged = AddStyleTriggers(m_pStyleCache, pProperty, pNewValue) || bChanged; } else if (GetType()->GetTypeStyle()) { bChanged = AddStyleTriggers(GetType()->GetTypeStyle(), pProperty, pNewValue) || bChanged; } if (bChanged) { if (!m_pTriggerProperties) m_pTriggerProperties = new CXTPMarkupProperties(NULL); for (i = 0; i < m_pActiveTriggers->GetCount(); i++) { CXTPMarkupTrigger* pTrigger = m_pActiveTriggers->GetItem(i); CXTPMarkupSetterColection* pSetters = pTrigger->GetSetters(); for (int j = 0; j < pSetters->GetCount(); j++) { CXTPMarkupSetter* pSetter = pSetters->GetItem(j); CXTPMarkupObject* pValue = pSetter->GetSetterValue(); CXTPMarkupDependencyProperty* pSetterProperty = pSetter->GetSetterProperty(); CXTPMarkupObject* pOldValue = m_pTriggerProperties->Lookup(pSetterProperty); if (!pValue->IsEqual(pOldValue)) { CXTPMarkupObject* pTempValue; if (!mapOldValues.Lookup(pSetterProperty, pTempValue)) { MARKUP_ADDREF(pOldValue); mapOldValues.SetAt(pSetterProperty, pOldValue); } pValue->AddRef(); m_pTriggerProperties->Set(pSetterProperty, pValue); } } } } POSITION pos = mapOldValues.GetStartPosition(); while (pos) { CXTPMarkupDependencyProperty* pProperty; CXTPMarkupObject* pOldValue; mapOldValues.GetNextAssoc(pos, pProperty, pOldValue); CXTPMarkupObject* pNewValue = m_pTriggerProperties->Lookup(pProperty); if (!::IsEqual(pNewValue, pOldValue)) { OnPropertyChanged(pProperty, pOldValue, pNewValue); if (pProperty->GetFlags() & CXTPMarkupPropertyMetadata::flagInherited) { RecursePropertyChanged(pProperty, pOldValue, pNewValue); } } MARKUP_RELEASE(pOldValue); } }