cleaned up cursor style handling

This commit is contained in:
peterl%netscape.com 1998-11-18 02:11:54 +00:00
Родитель 00ae8e9cc9
Коммит c053568936
20 изменённых файлов: 68 добавлений и 191 удалений

Просмотреть файл

@ -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;
}
}