зеркало из https://github.com/mozilla/pjs.git
cleaned up cursor style handling
This commit is contained in:
Родитель
00ae8e9cc9
Коммит
c053568936
|
@ -1217,7 +1217,7 @@ void MapDeclarationInto(nsICSSDeclaration* aDeclaration,
|
|||
list->mValue.GetStringValue(color->mCursorImage);
|
||||
}
|
||||
else if (eCSSUnit_Inherit == list->mValue.GetUnit()) {
|
||||
color->mCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
color->mCursor = parentColor->mCursor;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -98,11 +98,6 @@ public:
|
|||
|
||||
void GetDefaultLabel(nsString& aLabel);
|
||||
|
||||
NS_IMETHOD GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor);
|
||||
protected:
|
||||
virtual ~nsHTMLButtonControlFrame();
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
|
@ -675,18 +670,6 @@ nsHTMLButtonControlFrame::Reflow(nsIPresContext& aPresContext,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
nsresult result = nsHTMLContainerFrame::GetCursorAndContentAt(aPresContext, aPoint, aFrame, aContent, aCursor);
|
||||
aCursor = eCursor_standard;
|
||||
return result;
|
||||
}
|
||||
|
||||
PRIntn
|
||||
nsHTMLButtonControlFrame::GetSkipSides() const
|
||||
{
|
||||
|
|
|
@ -367,8 +367,13 @@ NS_METHOD nsContainerFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
const nsStyleColor* color = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
if (NS_STYLE_CURSOR_AUTO != color->mCursor) {
|
||||
aCursor = color->mCursor;
|
||||
}
|
||||
*aContent = mContent;
|
||||
*aFrame = this;
|
||||
|
||||
nsIFrame* kid;
|
||||
FirstChild(nsnull, kid);
|
||||
|
|
|
@ -1127,7 +1127,12 @@ NS_IMETHODIMP nsFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
PRInt32& aCursor)
|
||||
{
|
||||
*aContent = mContent;
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
*aFrame = this;
|
||||
const nsStyleColor* color = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
if (NS_STYLE_CURSOR_AUTO != color->mCursor) {
|
||||
aCursor = color->mCursor;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -117,52 +117,6 @@ nsHTMLContainerFrame::HandleEvent(nsIPresContext& aPresContext,
|
|||
return nsContainerFrame::HandleEvent(aPresContext, aEvent, aEventStatus);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLContainerFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
// Set content here, child will override if found.
|
||||
*aContent = mContent;
|
||||
|
||||
// Get my cursor
|
||||
const nsStyleColor* styleColor = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
PRInt32 myCursor = styleColor->mCursor;
|
||||
|
||||
if (NS_STYLE_CURSOR_INHERIT != myCursor) {
|
||||
// If this container has a particular cursor, use it, otherwise
|
||||
// let the child decide.
|
||||
*aFrame = this;
|
||||
aCursor = myCursor;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Get child's cursor, if any
|
||||
nsContainerFrame::GetCursorAndContentAt(aPresContext, aPoint, aFrame, aContent, aCursor);
|
||||
if (aCursor != NS_STYLE_CURSOR_INHERIT) {
|
||||
if (nsnull != mContent) {
|
||||
nsIAtom* tag;
|
||||
mContent->GetTag(tag);
|
||||
if (nsHTMLAtoms::a == tag) {
|
||||
// Anchor tags override their child cursors in some cases.
|
||||
if ((NS_STYLE_CURSOR_TEXT == aCursor) &&
|
||||
(NS_STYLE_CURSOR_INHERIT != myCursor)) {
|
||||
aCursor = myCursor;
|
||||
}
|
||||
}
|
||||
NS_RELEASE(tag);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// No specific cursor for us
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsPlaceholderFrame*
|
||||
nsHTMLContainerFrame::CreatePlaceholderFrame(nsIPresContext& aPresContext,
|
||||
nsIFrame* aFloatedFrame)
|
||||
|
|
|
@ -38,11 +38,6 @@ public:
|
|||
NS_IMETHOD HandleEvent(nsIPresContext& aPresContext,
|
||||
nsGUIEvent* aEvent,
|
||||
nsEventStatus& aEventStatus);
|
||||
NS_IMETHOD GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor);
|
||||
|
||||
nsPlaceholderFrame* CreatePlaceholderFrame(nsIPresContext& aPresContext,
|
||||
nsIFrame* aFloatedFrame);
|
||||
|
|
|
@ -262,9 +262,6 @@ RootFrame::HandleEvent(nsIPresContext& aPresContext,
|
|||
PRInt32 cursor;
|
||||
|
||||
GetCursorAndContentAt(aPresContext, aEvent->point, &target, &mContent, cursor);
|
||||
if (cursor == NS_STYLE_CURSOR_INHERIT) {
|
||||
cursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
}
|
||||
nsCursor c;
|
||||
switch (cursor) {
|
||||
default:
|
||||
|
|
|
@ -841,30 +841,28 @@ ImageFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
// The default cursor is to have no cursor
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
*aContent = mContent;
|
||||
|
||||
const nsStyleColor* styleColor = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
if (styleColor->mCursor != NS_STYLE_CURSOR_INHERIT) {
|
||||
// If we have a particular cursor, use it
|
||||
*aFrame = this;
|
||||
*aFrame = this;
|
||||
if (NS_STYLE_CURSOR_AUTO != styleColor->mCursor) {
|
||||
aCursor = (PRInt32) styleColor->mCursor;
|
||||
}
|
||||
|
||||
nsIImageMap* map = GetImageMap();
|
||||
if (nsnull != map) {
|
||||
nsRect inner;
|
||||
GetInnerArea(&aPresContext, inner);
|
||||
aCursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
float t2p = aPresContext.GetTwipsToPixels();
|
||||
PRInt32 x = NSTwipsToIntPixels((aPoint.x - inner.x), t2p);
|
||||
PRInt32 y = NSTwipsToIntPixels((aPoint.y - inner.y), t2p);
|
||||
if (NS_OK == map->IsInside(x, y)) {
|
||||
aCursor = NS_STYLE_CURSOR_POINTER;
|
||||
if (NS_STYLE_CURSOR_AUTO == styleColor->mCursor) { // image map wins over local auto
|
||||
nsIImageMap* map = GetImageMap();
|
||||
if (nsnull != map) {
|
||||
nsRect inner;
|
||||
GetInnerArea(&aPresContext, inner);
|
||||
aCursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
float t2p = aPresContext.GetTwipsToPixels();
|
||||
PRInt32 x = NSTwipsToIntPixels((aPoint.x - inner.x), t2p);
|
||||
PRInt32 y = NSTwipsToIntPixels((aPoint.y - inner.y), t2p);
|
||||
if (NS_OK == map->IsInside(x, y)) {
|
||||
aCursor = NS_STYLE_CURSOR_POINTER;
|
||||
}
|
||||
NS_RELEASE(map);
|
||||
}
|
||||
NS_RELEASE(map);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
|
|
@ -459,8 +459,11 @@ TextFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
*aContent = mContent;
|
||||
aCursor = NS_STYLE_CURSOR_TEXT;
|
||||
if (NS_STYLE_CURSOR_AUTO == aCursor) {
|
||||
*aContent = mContent;
|
||||
*aFrame = this;
|
||||
aCursor = NS_STYLE_CURSOR_TEXT;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -509,12 +509,9 @@ nsBodyFrame::HandleEvent(nsIPresContext& aPresContext,
|
|||
{
|
||||
nsIFrame* target = this;
|
||||
nsIContent* mTargetContent = mContent;
|
||||
PRInt32 cursor;
|
||||
PRInt32 cursor = NS_STYLE_CURSOR_AUTO;
|
||||
|
||||
GetCursorAndContentAt(aPresContext, aEvent->point, &target, &mTargetContent, cursor);
|
||||
if (cursor == NS_STYLE_CURSOR_INHERIT) {
|
||||
cursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
}
|
||||
nsCursor c;
|
||||
switch (cursor) {
|
||||
default:
|
||||
|
|
|
@ -367,8 +367,13 @@ NS_METHOD nsContainerFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
const nsStyleColor* color = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
if (NS_STYLE_CURSOR_AUTO != color->mCursor) {
|
||||
aCursor = color->mCursor;
|
||||
}
|
||||
*aContent = mContent;
|
||||
*aFrame = this;
|
||||
|
||||
nsIFrame* kid;
|
||||
FirstChild(nsnull, kid);
|
||||
|
|
|
@ -1127,7 +1127,12 @@ NS_IMETHODIMP nsFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
PRInt32& aCursor)
|
||||
{
|
||||
*aContent = mContent;
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
*aFrame = this;
|
||||
const nsStyleColor* color = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
if (NS_STYLE_CURSOR_AUTO != color->mCursor) {
|
||||
aCursor = color->mCursor;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -117,52 +117,6 @@ nsHTMLContainerFrame::HandleEvent(nsIPresContext& aPresContext,
|
|||
return nsContainerFrame::HandleEvent(aPresContext, aEvent, aEventStatus);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLContainerFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
// Set content here, child will override if found.
|
||||
*aContent = mContent;
|
||||
|
||||
// Get my cursor
|
||||
const nsStyleColor* styleColor = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
PRInt32 myCursor = styleColor->mCursor;
|
||||
|
||||
if (NS_STYLE_CURSOR_INHERIT != myCursor) {
|
||||
// If this container has a particular cursor, use it, otherwise
|
||||
// let the child decide.
|
||||
*aFrame = this;
|
||||
aCursor = myCursor;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Get child's cursor, if any
|
||||
nsContainerFrame::GetCursorAndContentAt(aPresContext, aPoint, aFrame, aContent, aCursor);
|
||||
if (aCursor != NS_STYLE_CURSOR_INHERIT) {
|
||||
if (nsnull != mContent) {
|
||||
nsIAtom* tag;
|
||||
mContent->GetTag(tag);
|
||||
if (nsHTMLAtoms::a == tag) {
|
||||
// Anchor tags override their child cursors in some cases.
|
||||
if ((NS_STYLE_CURSOR_TEXT == aCursor) &&
|
||||
(NS_STYLE_CURSOR_INHERIT != myCursor)) {
|
||||
aCursor = myCursor;
|
||||
}
|
||||
}
|
||||
NS_RELEASE(tag);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// No specific cursor for us
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsPlaceholderFrame*
|
||||
nsHTMLContainerFrame::CreatePlaceholderFrame(nsIPresContext& aPresContext,
|
||||
nsIFrame* aFloatedFrame)
|
||||
|
|
|
@ -38,11 +38,6 @@ public:
|
|||
NS_IMETHOD HandleEvent(nsIPresContext& aPresContext,
|
||||
nsGUIEvent* aEvent,
|
||||
nsEventStatus& aEventStatus);
|
||||
NS_IMETHOD GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor);
|
||||
|
||||
nsPlaceholderFrame* CreatePlaceholderFrame(nsIPresContext& aPresContext,
|
||||
nsIFrame* aFloatedFrame);
|
||||
|
|
|
@ -262,9 +262,6 @@ RootFrame::HandleEvent(nsIPresContext& aPresContext,
|
|||
PRInt32 cursor;
|
||||
|
||||
GetCursorAndContentAt(aPresContext, aEvent->point, &target, &mContent, cursor);
|
||||
if (cursor == NS_STYLE_CURSOR_INHERIT) {
|
||||
cursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
}
|
||||
nsCursor c;
|
||||
switch (cursor) {
|
||||
default:
|
||||
|
|
|
@ -841,30 +841,28 @@ ImageFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
// The default cursor is to have no cursor
|
||||
aCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
*aContent = mContent;
|
||||
|
||||
const nsStyleColor* styleColor = (const nsStyleColor*)
|
||||
mStyleContext->GetStyleData(eStyleStruct_Color);
|
||||
if (styleColor->mCursor != NS_STYLE_CURSOR_INHERIT) {
|
||||
// If we have a particular cursor, use it
|
||||
*aFrame = this;
|
||||
*aFrame = this;
|
||||
if (NS_STYLE_CURSOR_AUTO != styleColor->mCursor) {
|
||||
aCursor = (PRInt32) styleColor->mCursor;
|
||||
}
|
||||
|
||||
nsIImageMap* map = GetImageMap();
|
||||
if (nsnull != map) {
|
||||
nsRect inner;
|
||||
GetInnerArea(&aPresContext, inner);
|
||||
aCursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
float t2p = aPresContext.GetTwipsToPixels();
|
||||
PRInt32 x = NSTwipsToIntPixels((aPoint.x - inner.x), t2p);
|
||||
PRInt32 y = NSTwipsToIntPixels((aPoint.y - inner.y), t2p);
|
||||
if (NS_OK == map->IsInside(x, y)) {
|
||||
aCursor = NS_STYLE_CURSOR_POINTER;
|
||||
if (NS_STYLE_CURSOR_AUTO == styleColor->mCursor) { // image map wins over local auto
|
||||
nsIImageMap* map = GetImageMap();
|
||||
if (nsnull != map) {
|
||||
nsRect inner;
|
||||
GetInnerArea(&aPresContext, inner);
|
||||
aCursor = NS_STYLE_CURSOR_DEFAULT;
|
||||
float t2p = aPresContext.GetTwipsToPixels();
|
||||
PRInt32 x = NSTwipsToIntPixels((aPoint.x - inner.x), t2p);
|
||||
PRInt32 y = NSTwipsToIntPixels((aPoint.y - inner.y), t2p);
|
||||
if (NS_OK == map->IsInside(x, y)) {
|
||||
aCursor = NS_STYLE_CURSOR_POINTER;
|
||||
}
|
||||
NS_RELEASE(map);
|
||||
}
|
||||
NS_RELEASE(map);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
|
|
@ -459,8 +459,11 @@ TextFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
|||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
*aContent = mContent;
|
||||
aCursor = NS_STYLE_CURSOR_TEXT;
|
||||
if (NS_STYLE_CURSOR_AUTO == aCursor) {
|
||||
*aContent = mContent;
|
||||
*aFrame = this;
|
||||
aCursor = NS_STYLE_CURSOR_TEXT;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -98,11 +98,6 @@ public:
|
|||
|
||||
void GetDefaultLabel(nsString& aLabel);
|
||||
|
||||
NS_IMETHOD GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor);
|
||||
protected:
|
||||
virtual ~nsHTMLButtonControlFrame();
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
|
@ -675,18 +670,6 @@ nsHTMLButtonControlFrame::Reflow(nsIPresContext& aPresContext,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::GetCursorAndContentAt(nsIPresContext& aPresContext,
|
||||
const nsPoint& aPoint,
|
||||
nsIFrame** aFrame,
|
||||
nsIContent** aContent,
|
||||
PRInt32& aCursor)
|
||||
{
|
||||
nsresult result = nsHTMLContainerFrame::GetCursorAndContentAt(aPresContext, aPoint, aFrame, aContent, aCursor);
|
||||
aCursor = eCursor_standard;
|
||||
return result;
|
||||
}
|
||||
|
||||
PRIntn
|
||||
nsHTMLButtonControlFrame::GetSkipSides() const
|
||||
{
|
||||
|
|
|
@ -1217,7 +1217,7 @@ void MapDeclarationInto(nsICSSDeclaration* aDeclaration,
|
|||
list->mValue.GetStringValue(color->mCursorImage);
|
||||
}
|
||||
else if (eCSSUnit_Inherit == list->mValue.GetUnit()) {
|
||||
color->mCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
color->mCursor = parentColor->mCursor;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1217,7 +1217,7 @@ void MapDeclarationInto(nsICSSDeclaration* aDeclaration,
|
|||
list->mValue.GetStringValue(color->mCursorImage);
|
||||
}
|
||||
else if (eCSSUnit_Inherit == list->mValue.GetUnit()) {
|
||||
color->mCursor = NS_STYLE_CURSOR_INHERIT;
|
||||
color->mCursor = parentColor->mCursor;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче