LRESULT CElementPropPage::OnClickedAddbutton(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { ATLTRACE(_T("OnClickedAddbutton\n")); HRESULT hr; CComPtr<IDMGraphCtrl> spGraph; if(FAILED(GetGraphCtrl(&spGraph))) { return 0; } CComPtr<IDMGraphCollection> spGraphCollection; hr = spGraph->get_Elements(&spGraphCollection); if(FAILED(hr)) { return hr; } AppendNewItem(spGraphCollection); UpdateControls(spGraph); return 0; }
already_AddRefed<DataTransferItem> DataTransferItemList::SetDataWithPrincipal( const nsAString& aType, nsIVariant* aData, uint32_t aIndex, nsIPrincipal* aPrincipal, bool aInsertOnly, bool aHidden, ErrorResult& aRv) { if (aIndex < mIndexedItems.Length()) { nsTArray<RefPtr<DataTransferItem>>& items = mIndexedItems[aIndex]; uint32_t count = items.Length(); for (uint32_t i = 0; i < count; i++) { RefPtr<DataTransferItem> item = items[i]; nsString type; item->GetInternalType(type); if (type.Equals(aType)) { if (NS_WARN_IF(aInsertOnly)) { aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR); return nullptr; } // don't allow replacing data that has a stronger principal bool subsumes; if (NS_WARN_IF(item->Principal() && aPrincipal && (NS_FAILED(aPrincipal->Subsumes(item->Principal(), &subsumes)) || !subsumes))) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return nullptr; } item->SetPrincipal(aPrincipal); DataTransferItem::eKind oldKind = item->Kind(); item->SetData(aData); mDataTransfer->TypesListMayHaveChanged(); if (aIndex != 0) { // If the item changes from being a file to not a file or vice-versa, // its presence in the mItems array may need to change. if (item->Kind() == DataTransferItem::KIND_FILE && oldKind != DataTransferItem::KIND_FILE) { // not file => file mItems.AppendElement(item); } else if (item->Kind() != DataTransferItem::KIND_FILE && oldKind == DataTransferItem::KIND_FILE) { // file => not file mItems.RemoveElement(item); } } // Regenerate the Files array if we have modified a file's status if (item->Kind() == DataTransferItem::KIND_FILE || oldKind == DataTransferItem::KIND_FILE) { RegenerateFiles(); } return item.forget(); } } } else { // Make sure that we aren't adding past the end of the mIndexedItems array. // XXX Should this be a MOZ_ASSERT instead? aIndex = mIndexedItems.Length(); } // Add the new item RefPtr<DataTransferItem> item = AppendNewItem(aIndex, aType, aData, aPrincipal, aHidden); if (item->Kind() == DataTransferItem::KIND_FILE) { RegenerateFiles(); } return item.forget(); }