Implement CSS3 cursors on Windows

This commit is contained in:
michael.lowe%bigfoot.com 2000-05-07 05:14:43 +00:00
parent 127758985b
commit 468689c637
15 changed files with 216 additions and 1 deletions

View File

@ -1175,6 +1175,36 @@ nsEventStateManager::SetCursor(PRInt32 aCursor, nsIWidget* aWidget, PRBool aLock
case NS_STYLE_CURSOR_SW_RESIZE:
c = eCursor_sizeSW;
break;
case NS_STYLE_CURSOR_COPY: // CSS3
c = eCursor_copy;
break;
case NS_STYLE_CURSOR_ALIAS:
c = eCursor_alias;
break;
case NS_STYLE_CURSOR_CONTEXT_MENU:
c = eCursor_context_menu;
break;
case NS_STYLE_CURSOR_CELL:
c = eCursor_cell;
break;
case NS_STYLE_CURSOR_GRAB:
c = eCursor_grab;
break;
case NS_STYLE_CURSOR_GRABBING:
c = eCursor_grabbing;
break;
case NS_STYLE_CURSOR_SPINNING:
c = eCursor_spinning;
break;
case NS_STYLE_CURSOR_COUNT_UP:
c = eCursor_count_up;
break;
case NS_STYLE_CURSOR_COUNT_DOWN:
c = eCursor_count_down;
break;
case NS_STYLE_CURSOR_COUNT_UP_DOWN:
c = eCursor_count_up_down;
break;
}
aWidget->SetCursor(c);

View File

@ -51,6 +51,7 @@ CSS_KEY(above)
CSS_KEY(absolute)
CSS_KEY(activeborder)
CSS_KEY(activecaption)
CSS_KEY(alias)
CSS_KEY(all)
CSS_KEY(always)
CSS_KEY(appworkspace)
@ -79,6 +80,7 @@ CSS_KEY(buttontext)
CSS_KEY(capitalize)
CSS_KEY(caption)
CSS_KEY(captiontext)
CSS_KEY(cell)
CSS_KEY(center)
CSS_KEY(center_left)
CSS_KEY(center_right)
@ -94,7 +96,12 @@ CSS_KEY(collapse)
CSS_KEY(compact)
CSS_KEY(condensed)
CSS_KEY(content_box)
CSS_KEY(context_menu)
CSS_KEY(continuous)
CSS_KEY(copy)
CSS_KEY(count_down)
CSS_KEY(count_up)
CSS_KEY(count_up_down)
CSS_KEY(crop)
CSS_KEY(cross)
CSS_KEY(crosshair)
@ -129,6 +136,8 @@ CSS_KEY(faster)
CSS_KEY(field)
CSS_KEY(fixed)
CSS_KEY(georgian)
CSS_KEY(grab)
CSS_KEY(grabbing)
CSS_KEY(grad)
CSS_KEY(graytext)
CSS_KEY(groove)
@ -272,6 +281,7 @@ CSS_KEY(smaller)
CSS_KEY(soft)
CSS_KEY(solid)
CSS_KEY(spell_out)
CSS_KEY(spinning)
CSS_KEY(square)
CSS_KEY(static)
CSS_KEY(status_bar)

View File

@ -51,6 +51,7 @@ CSS_KEY(above)
CSS_KEY(absolute)
CSS_KEY(activeborder)
CSS_KEY(activecaption)
CSS_KEY(alias)
CSS_KEY(all)
CSS_KEY(always)
CSS_KEY(appworkspace)
@ -79,6 +80,7 @@ CSS_KEY(buttontext)
CSS_KEY(capitalize)
CSS_KEY(caption)
CSS_KEY(captiontext)
CSS_KEY(cell)
CSS_KEY(center)
CSS_KEY(center_left)
CSS_KEY(center_right)
@ -94,7 +96,12 @@ CSS_KEY(collapse)
CSS_KEY(compact)
CSS_KEY(condensed)
CSS_KEY(content_box)
CSS_KEY(context_menu)
CSS_KEY(continuous)
CSS_KEY(copy)
CSS_KEY(count_down)
CSS_KEY(count_up)
CSS_KEY(count_up_down)
CSS_KEY(crop)
CSS_KEY(cross)
CSS_KEY(crosshair)
@ -129,6 +136,8 @@ CSS_KEY(faster)
CSS_KEY(field)
CSS_KEY(fixed)
CSS_KEY(georgian)
CSS_KEY(grab)
CSS_KEY(grabbing)
CSS_KEY(grad)
CSS_KEY(graytext)
CSS_KEY(groove)
@ -272,6 +281,7 @@ CSS_KEY(smaller)
CSS_KEY(soft)
CSS_KEY(solid)
CSS_KEY(spell_out)
CSS_KEY(spinning)
CSS_KEY(square)
CSS_KEY(static)
CSS_KEY(status_bar)

View File

@ -303,6 +303,16 @@ const PRInt32 nsCSSProps::kCursorKTable[] = {
eCSSKeyword_text, NS_STYLE_CURSOR_TEXT,
eCSSKeyword_wait, NS_STYLE_CURSOR_WAIT,
eCSSKeyword_help, NS_STYLE_CURSOR_HELP,
eCSSKeyword_copy, NS_STYLE_CURSOR_COPY, // CSS3
eCSSKeyword_alias, NS_STYLE_CURSOR_ALIAS,
eCSSKeyword_context_menu, NS_STYLE_CURSOR_CONTEXT_MENU,
eCSSKeyword_cell, NS_STYLE_CURSOR_CELL,
eCSSKeyword_grab, NS_STYLE_CURSOR_GRAB,
eCSSKeyword_grabbing, NS_STYLE_CURSOR_GRABBING,
eCSSKeyword_spinning, NS_STYLE_CURSOR_SPINNING,
eCSSKeyword_count_up, NS_STYLE_CURSOR_COUNT_UP,
eCSSKeyword_count_down, NS_STYLE_CURSOR_COUNT_DOWN,
eCSSKeyword_count_up_down, NS_STYLE_CURSOR_COUNT_UP_DOWN,
-1,-1
};

View File

@ -1539,6 +1539,16 @@ NS_IMETHODIMP GlobalWindowImpl::SetCursor(const nsString& aCursor)
else if (aCursor.EqualsWithConversion("nw-resize")) cursor = NS_STYLE_CURSOR_NW_RESIZE;
else if (aCursor.EqualsWithConversion("se-resize")) cursor = NS_STYLE_CURSOR_SE_RESIZE;
else if (aCursor.EqualsWithConversion("sw-resize")) cursor = NS_STYLE_CURSOR_SW_RESIZE;
else if (aCursor.EqualsWithConversion("copy")) cursor = NS_STYLE_CURSOR_COPY; // CSS3
else if (aCursor.EqualsWithConversion("alias")) cursor = NS_STYLE_CURSOR_ALIAS;
else if (aCursor.EqualsWithConversion("context-menu")) cursor = NS_STYLE_CURSOR_CONTEXT_MENU;
else if (aCursor.EqualsWithConversion("cell")) cursor = NS_STYLE_CURSOR_CELL;
else if (aCursor.EqualsWithConversion("grab")) cursor = NS_STYLE_CURSOR_GRAB;
else if (aCursor.EqualsWithConversion("grabbing")) cursor = NS_STYLE_CURSOR_GRABBING;
else if (aCursor.EqualsWithConversion("spinning")) cursor = NS_STYLE_CURSOR_SPINNING;
else if (aCursor.EqualsWithConversion("count-up")) cursor = NS_STYLE_CURSOR_COUNT_UP;
else if (aCursor.EqualsWithConversion("count-down")) cursor = NS_STYLE_CURSOR_COUNT_DOWN;
else if (aCursor.EqualsWithConversion("count-up-down")) cursor = NS_STYLE_CURSOR_COUNT_UP_DOWN;
else return NS_OK;
nsCOMPtr<nsIPresContext> presContext;

View File

@ -249,6 +249,17 @@
#define NS_STYLE_CURSOR_TEXT 14 // ie: i-beam
#define NS_STYLE_CURSOR_WAIT 15
#define NS_STYLE_CURSOR_HELP 16
#define NS_STYLE_CURSOR_COPY 17 // CSS3
#define NS_STYLE_CURSOR_ALIAS 18
#define NS_STYLE_CURSOR_CONTEXT_MENU 19
#define NS_STYLE_CURSOR_CELL 20
#define NS_STYLE_CURSOR_GRAB 21
#define NS_STYLE_CURSOR_GRABBING 22
#define NS_STYLE_CURSOR_SPINNING 23
#define NS_STYLE_CURSOR_COUNT_UP 24
#define NS_STYLE_CURSOR_COUNT_DOWN 25
#define NS_STYLE_CURSOR_COUNT_UP_DOWN 26
// See nsStyleDisplay
#define NS_STYLE_DIRECTION_LTR 0

View File

@ -249,6 +249,17 @@
#define NS_STYLE_CURSOR_TEXT 14 // ie: i-beam
#define NS_STYLE_CURSOR_WAIT 15
#define NS_STYLE_CURSOR_HELP 16
#define NS_STYLE_CURSOR_COPY 17 // CSS3
#define NS_STYLE_CURSOR_ALIAS 18
#define NS_STYLE_CURSOR_CONTEXT_MENU 19
#define NS_STYLE_CURSOR_CELL 20
#define NS_STYLE_CURSOR_GRAB 21
#define NS_STYLE_CURSOR_GRABBING 22
#define NS_STYLE_CURSOR_SPINNING 23
#define NS_STYLE_CURSOR_COUNT_UP 24
#define NS_STYLE_CURSOR_COUNT_DOWN 25
#define NS_STYLE_CURSOR_COUNT_UP_DOWN 26
// See nsStyleDisplay
#define NS_STYLE_DIRECTION_LTR 0

View File

@ -1175,6 +1175,36 @@ nsEventStateManager::SetCursor(PRInt32 aCursor, nsIWidget* aWidget, PRBool aLock
case NS_STYLE_CURSOR_SW_RESIZE:
c = eCursor_sizeSW;
break;
case NS_STYLE_CURSOR_COPY: // CSS3
c = eCursor_copy;
break;
case NS_STYLE_CURSOR_ALIAS:
c = eCursor_alias;
break;
case NS_STYLE_CURSOR_CONTEXT_MENU:
c = eCursor_context_menu;
break;
case NS_STYLE_CURSOR_CELL:
c = eCursor_cell;
break;
case NS_STYLE_CURSOR_GRAB:
c = eCursor_grab;
break;
case NS_STYLE_CURSOR_GRABBING:
c = eCursor_grabbing;
break;
case NS_STYLE_CURSOR_SPINNING:
c = eCursor_spinning;
break;
case NS_STYLE_CURSOR_COUNT_UP:
c = eCursor_count_up;
break;
case NS_STYLE_CURSOR_COUNT_DOWN:
c = eCursor_count_down;
break;
case NS_STYLE_CURSOR_COUNT_UP_DOWN:
c = eCursor_count_up_down;
break;
}
aWidget->SetCursor(c);

View File

@ -51,6 +51,7 @@ CSS_KEY(above)
CSS_KEY(absolute)
CSS_KEY(activeborder)
CSS_KEY(activecaption)
CSS_KEY(alias)
CSS_KEY(all)
CSS_KEY(always)
CSS_KEY(appworkspace)
@ -79,6 +80,7 @@ CSS_KEY(buttontext)
CSS_KEY(capitalize)
CSS_KEY(caption)
CSS_KEY(captiontext)
CSS_KEY(cell)
CSS_KEY(center)
CSS_KEY(center_left)
CSS_KEY(center_right)
@ -94,7 +96,12 @@ CSS_KEY(collapse)
CSS_KEY(compact)
CSS_KEY(condensed)
CSS_KEY(content_box)
CSS_KEY(context_menu)
CSS_KEY(continuous)
CSS_KEY(copy)
CSS_KEY(count_down)
CSS_KEY(count_up)
CSS_KEY(count_up_down)
CSS_KEY(crop)
CSS_KEY(cross)
CSS_KEY(crosshair)
@ -129,6 +136,8 @@ CSS_KEY(faster)
CSS_KEY(field)
CSS_KEY(fixed)
CSS_KEY(georgian)
CSS_KEY(grab)
CSS_KEY(grabbing)
CSS_KEY(grad)
CSS_KEY(graytext)
CSS_KEY(groove)
@ -272,6 +281,7 @@ CSS_KEY(smaller)
CSS_KEY(soft)
CSS_KEY(solid)
CSS_KEY(spell_out)
CSS_KEY(spinning)
CSS_KEY(square)
CSS_KEY(static)
CSS_KEY(status_bar)

View File

@ -303,6 +303,16 @@ const PRInt32 nsCSSProps::kCursorKTable[] = {
eCSSKeyword_text, NS_STYLE_CURSOR_TEXT,
eCSSKeyword_wait, NS_STYLE_CURSOR_WAIT,
eCSSKeyword_help, NS_STYLE_CURSOR_HELP,
eCSSKeyword_copy, NS_STYLE_CURSOR_COPY, // CSS3
eCSSKeyword_alias, NS_STYLE_CURSOR_ALIAS,
eCSSKeyword_context_menu, NS_STYLE_CURSOR_CONTEXT_MENU,
eCSSKeyword_cell, NS_STYLE_CURSOR_CELL,
eCSSKeyword_grab, NS_STYLE_CURSOR_GRAB,
eCSSKeyword_grabbing, NS_STYLE_CURSOR_GRABBING,
eCSSKeyword_spinning, NS_STYLE_CURSOR_SPINNING,
eCSSKeyword_count_up, NS_STYLE_CURSOR_COUNT_UP,
eCSSKeyword_count_down, NS_STYLE_CURSOR_COUNT_DOWN,
eCSSKeyword_count_up_down, NS_STYLE_CURSOR_COUNT_UP_DOWN,
-1,-1
};

View File

@ -51,6 +51,7 @@ CSS_KEY(above)
CSS_KEY(absolute)
CSS_KEY(activeborder)
CSS_KEY(activecaption)
CSS_KEY(alias)
CSS_KEY(all)
CSS_KEY(always)
CSS_KEY(appworkspace)
@ -79,6 +80,7 @@ CSS_KEY(buttontext)
CSS_KEY(capitalize)
CSS_KEY(caption)
CSS_KEY(captiontext)
CSS_KEY(cell)
CSS_KEY(center)
CSS_KEY(center_left)
CSS_KEY(center_right)
@ -94,7 +96,12 @@ CSS_KEY(collapse)
CSS_KEY(compact)
CSS_KEY(condensed)
CSS_KEY(content_box)
CSS_KEY(context_menu)
CSS_KEY(continuous)
CSS_KEY(copy)
CSS_KEY(count_down)
CSS_KEY(count_up)
CSS_KEY(count_up_down)
CSS_KEY(crop)
CSS_KEY(cross)
CSS_KEY(crosshair)
@ -129,6 +136,8 @@ CSS_KEY(faster)
CSS_KEY(field)
CSS_KEY(fixed)
CSS_KEY(georgian)
CSS_KEY(grab)
CSS_KEY(grabbing)
CSS_KEY(grad)
CSS_KEY(graytext)
CSS_KEY(groove)
@ -272,6 +281,7 @@ CSS_KEY(smaller)
CSS_KEY(soft)
CSS_KEY(solid)
CSS_KEY(spell_out)
CSS_KEY(spinning)
CSS_KEY(square)
CSS_KEY(static)
CSS_KEY(status_bar)

View File

@ -303,6 +303,16 @@ const PRInt32 nsCSSProps::kCursorKTable[] = {
eCSSKeyword_text, NS_STYLE_CURSOR_TEXT,
eCSSKeyword_wait, NS_STYLE_CURSOR_WAIT,
eCSSKeyword_help, NS_STYLE_CURSOR_HELP,
eCSSKeyword_copy, NS_STYLE_CURSOR_COPY, // CSS3
eCSSKeyword_alias, NS_STYLE_CURSOR_ALIAS,
eCSSKeyword_context_menu, NS_STYLE_CURSOR_CONTEXT_MENU,
eCSSKeyword_cell, NS_STYLE_CURSOR_CELL,
eCSSKeyword_grab, NS_STYLE_CURSOR_GRAB,
eCSSKeyword_grabbing, NS_STYLE_CURSOR_GRABBING,
eCSSKeyword_spinning, NS_STYLE_CURSOR_SPINNING,
eCSSKeyword_count_up, NS_STYLE_CURSOR_COUNT_UP,
eCSSKeyword_count_down, NS_STYLE_CURSOR_COUNT_DOWN,
eCSSKeyword_count_up_down, NS_STYLE_CURSOR_COUNT_UP_DOWN,
-1,-1
};

View File

@ -164,7 +164,17 @@ enum nsCursor { ///(normal cursor, usually rendered as an arrow)
eCursor_crosshair,
//Don't know what 'move' cursor should be. See CSS2.
eCursor_move,
eCursor_help
eCursor_help,
eCursor_copy, // CSS3
eCursor_alias,
eCursor_context_menu,
eCursor_cell,
eCursor_grab,
eCursor_grabbing,
eCursor_spinning,
eCursor_count_up,
eCursor_count_down,
eCursor_count_up_down
};

View File

@ -864,6 +864,19 @@ NS_IMETHODIMP nsWidget::SetCursor(nsCursor aCursor)
newCursor = gdk_cursor_new(GDK_LEFT_SIDE);
break;
case eCursor_copy: // CSS3
case eCursor_alias:
case eCursor_cell:
case eCursor_grab:
case eCursor_grabbing:
case eCursor_spinning:
case eCursor_context_menu:
case eCursor_count_up:
case eCursor_count_down:
case eCursor_count_up_down:
// XXX: these CSS3 cursors need to be implemented
break;
default:
NS_ASSERTION(PR_FALSE, "Invalid cursor type");
break;

View File

@ -1675,6 +1675,36 @@ NS_METHOD nsWindow::SetCursor(nsCursor aCursor)
newCursor = ::LoadCursor(NULL, IDC_HELP);
break;
case eCursor_copy: // CSS3
newCursor = ::LoadCursor(nsToolkit::mDllInstance, MAKEINTRESOURCE(IDC_COPY));
break;
case eCursor_alias:
newCursor = ::LoadCursor(nsToolkit::mDllInstance, MAKEINTRESOURCE(IDC_ALIAS));
break;
case eCursor_cell:
newCursor = ::LoadCursor(nsToolkit::mDllInstance, MAKEINTRESOURCE(IDC_CELL));
break;
case eCursor_grab:
newCursor = ::LoadCursor(nsToolkit::mDllInstance, MAKEINTRESOURCE(IDC_GRAB));
break;
case eCursor_grabbing:
newCursor = ::LoadCursor(nsToolkit::mDllInstance, MAKEINTRESOURCE(IDC_GRABBING));
break;
case eCursor_spinning:
newCursor = ::LoadCursor(NULL, IDC_APPSTARTING);
break;
case eCursor_context_menu:
case eCursor_count_up:
case eCursor_count_down:
case eCursor_count_up_down:
break;
default:
NS_ASSERTION(0, "Invalid cursor type");
break;