diff --git a/layout/base/src/nsFrame.cpp b/layout/base/src/nsFrame.cpp index 9c625b984c81..b6a24d713492 100644 --- a/layout/base/src/nsFrame.cpp +++ b/layout/base/src/nsFrame.cpp @@ -40,10 +40,6 @@ #include "nsIDeviceContext.h" #include "nsIPresShell.h" -#if THIS_IS_THE_LINK_FIX -#include "nsHTMLAtoms.h" -#endif - // Some Misc #defines #define SELECTION_DEBUG 0 #define FORCE_SELECTION_UPDATE 1 @@ -582,28 +578,6 @@ NS_METHOD nsFrame::HandleEvent(nsIPresContext& aPresContext, if(nsEventStatus_eConsumeNoDefault != aEventStatus) { if (aEvent->message == NS_MOUSE_LEFT_BUTTON_DOWN) { -#if THIS_IS_THE_LINK_FIX - nsIContent * content = mContent; - nsIAtom * atom = content->GetTag(); - NS_ADDREF(content); - while (atom == nsnull) { - nsIContent * oldContent = content; - content = oldContent->GetParent(); - NS_RELEASE(oldContent); - atom = content->GetTag(); - } - NS_RELEASE(content); - - if (atom == nsHTMLAtoms::a) { - nsString href; - content->GetAttribute(nsString("href"), href); - if (href.Length() > 0) { - NS_RELEASE(atom); - return NS_OK; - } - } - NS_RELEASE(atom); -#endif } else if (aEvent->message == NS_MOUSE_MOVE && mDoingSelection || aEvent->message == NS_MOUSE_LEFT_BUTTON_UP) { // no-op diff --git a/layout/generic/nsHTMLContainerFrame.cpp b/layout/generic/nsHTMLContainerFrame.cpp index 0df3418df9b9..9a09bee5da17 100644 --- a/layout/generic/nsHTMLContainerFrame.cpp +++ b/layout/generic/nsHTMLContainerFrame.cpp @@ -95,6 +95,20 @@ NS_METHOD nsHTMLContainerFrame::HandleEvent(nsIPresContext& aPresContext, nsGUIEvent* aEvent, nsEventStatus& aEventStatus) { + // This masks out selection on the down click + if (aEvent->message == NS_MOUSE_LEFT_BUTTON_DOWN) { + nsIAtom* tag = mContent->GetTag(); + if (nsHTMLAtoms::a == tag) { + nsString href; + mContent->GetAttribute(nsString("href"), href); + if (href.Length() > 0) { + NS_RELEASE(tag); + return NS_OK; + } + } + NS_RELEASE(tag); + } + return nsContainerFrame::HandleEvent(aPresContext, aEvent, aEventStatus); } diff --git a/layout/html/base/src/nsHTMLContainerFrame.cpp b/layout/html/base/src/nsHTMLContainerFrame.cpp index 0df3418df9b9..9a09bee5da17 100644 --- a/layout/html/base/src/nsHTMLContainerFrame.cpp +++ b/layout/html/base/src/nsHTMLContainerFrame.cpp @@ -95,6 +95,20 @@ NS_METHOD nsHTMLContainerFrame::HandleEvent(nsIPresContext& aPresContext, nsGUIEvent* aEvent, nsEventStatus& aEventStatus) { + // This masks out selection on the down click + if (aEvent->message == NS_MOUSE_LEFT_BUTTON_DOWN) { + nsIAtom* tag = mContent->GetTag(); + if (nsHTMLAtoms::a == tag) { + nsString href; + mContent->GetAttribute(nsString("href"), href); + if (href.Length() > 0) { + NS_RELEASE(tag); + return NS_OK; + } + } + NS_RELEASE(tag); + } + return nsContainerFrame::HandleEvent(aPresContext, aEvent, aEventStatus); }