nsresult nsImageMap::HandleEvent(nsIDOMEvent* aEvent) { nsAutoString eventType; aEvent->GetType(eventType); bool focus = eventType.EqualsLiteral("focus"); NS_ABORT_IF_FALSE(focus == !eventType.EqualsLiteral("blur"), "Unexpected event type"); //Set which one of our areas changed focus nsCOMPtr<nsIContent> targetContent = do_QueryInterface( aEvent->InternalDOMEvent()->GetTarget()); if (!targetContent) { return NS_OK; } uint32_t i, n = mAreas.Length(); for (i = 0; i < n; i++) { Area* area = mAreas.ElementAt(i); if (area->mArea == targetContent) { //Set or Remove internal focus area->HasFocus(focus); //Now invalidate the rect if (mImageFrame) { mImageFrame->InvalidateFrame(); } break; } } return NS_OK; }
nsresult nsImageMap::ChangeFocus(nsIDOMEvent* aEvent, PRBool aFocus) { //Set which one of our areas changed focus nsCOMPtr<nsIDOMEventTarget> target; if (NS_SUCCEEDED(aEvent->GetTarget(getter_AddRefs(target))) && target) { nsCOMPtr<nsIContent> targetContent(do_QueryInterface(target)); if (targetContent) { PRUint32 i, n = mAreas.Length(); for (i = 0; i < n; i++) { Area* area = mAreas.ElementAt(i); if (area->mArea == targetContent) { //Set or Remove internal focus area->HasFocus(aFocus); //Now invalidate the rect nsIFrame* imgFrame = targetContent->GetPrimaryFrame(); if (imgFrame) { nsRect dmgRect; area->GetRect(imgFrame, dmgRect); imgFrame->Invalidate(dmgRect); } break; } } } } return NS_OK; }
nsresult nsImageMap::HandleEvent(nsIDOMEvent* aEvent) { nsAutoString eventType; aEvent->GetType(eventType); bool focus = eventType.EqualsLiteral("focus"); NS_ABORT_IF_FALSE(focus == !eventType.EqualsLiteral("blur"), "Unexpected event type"); //Set which one of our areas changed focus nsCOMPtr<nsIDOMEventTarget> target; if (NS_SUCCEEDED(aEvent->GetTarget(getter_AddRefs(target))) && target) { nsCOMPtr<nsIContent> targetContent(do_QueryInterface(target)); if (targetContent) { PRUint32 i, n = mAreas.Length(); for (i = 0; i < n; i++) { Area* area = mAreas.ElementAt(i); if (area->mArea == targetContent) { //Set or Remove internal focus area->HasFocus(focus); //Now invalidate the rect if (mImageFrame) { nsRect dmgRect; area->GetRect(mImageFrame, dmgRect); mImageFrame->Invalidate(dmgRect); } break; } } } } return NS_OK; }