Example #1
0
bool
ResourceDictionary::Remove (const char *key)
{
	if (!key)
		return false;

	/* check if the item exists first */
	Value* orig_value;
	gpointer orig_key;

	if (!g_hash_table_lookup_extended (hash, key,
					   &orig_key, (gpointer*)&orig_value))
		return false;

	from_resource_dictionary_api = true;
	Collection::Remove (orig_value);
	from_resource_dictionary_api = false;

	DependencyObject *ob = orig_value->Is (GetDeployment (), Type::DEPENDENCY_OBJECT) ? orig_value->AsDependencyObject () : NULL;
	if (ob)
		ob->SetMentor (NULL);

	// No need to strengthen orig_value before clearing
	// because we copy it first.
	Value orig_copy (*orig_value);

	g_hash_table_remove (hash, key);

	EmitChanged (CollectionChangedActionRemove, NULL, &orig_copy, key);

	return true;
}