Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
nsresult
nsImageMap::GetBoundsForAreaContent(nsIContent *aContent,
                                    nsRect& aBounds)
{
  NS_ENSURE_TRUE(aContent && mImageFrame, NS_ERROR_INVALID_ARG);

  // Find the Area struct associated with this content node, and return bounds
  uint32_t i, n = mAreas.Length();
  for (i = 0; i < n; i++) {
    Area* area = mAreas.ElementAt(i);
    if (area->mArea == aContent) {
      aBounds = nsRect();
      area->GetRect(mImageFrame, aBounds);
      return NS_OK;
    }
  }
  return NS_ERROR_FAILURE;
}
Example #4
0
NS_IMETHODIMP
nsImageMap::GetBoundsForAreaContent(nsIContent *aContent,
                                    nsRect& aBounds)
{
  NS_ENSURE_TRUE(aContent, NS_ERROR_INVALID_ARG);

  // Find the Area struct associated with this content node, and return bounds
  PRUint32 i, n = mAreas.Length();
  for (i = 0; i < n; i++) {
    Area* area = mAreas.ElementAt(i);
    if (area->mArea == aContent) {
      aBounds = nsRect();
      nsIFrame* frame = aContent->GetPrimaryFrame();
      if (frame) {
        area->GetRect(frame, aBounds);
      }
      return NS_OK;
    }
  }
  return NS_ERROR_FAILURE;
}