Bug 282588. MozillaContentWindowClass on frames and iframes confuses screen readers. r=ere, sr=neil

This commit is contained in:
aaronleventhal%moonset.net 2005-02-18 14:24:43 +00:00
Родитель 88149e22ef
Коммит 7b4facebc5
4 изменённых файлов: 38 добавлений и 13 удалений

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

@ -675,8 +675,17 @@ nsSubDocumentFrame::ShowDocShell()
if (treeItem) { if (treeItem) {
treeItem->GetItemType(&itemType); treeItem->GetItemType(&itemType);
} }
rv = CreateViewAndWidget(itemType == nsIDocShellTreeItem::typeChrome ?
eContentTypeUI : eContentTypeContent); nsContentType contentType;
if (itemType == nsIDocShellTreeItem::typeChrome) {
contentType = eContentTypeUI;
}
else {
nsCOMPtr<nsIDocShellTreeItem> sameTypeParent;
treeItem->GetSameTypeParent(getter_AddRefs(sameTypeParent));
contentType = sameTypeParent ? eContentTypeContentFrame : eContentTypeContent;
}
rv = CreateViewAndWidget(contentType);
if (NS_FAILED(rv)) { if (NS_FAILED(rv)) {
return rv; return rv;
} }

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

@ -209,8 +209,9 @@ enum nsCursor { ///(normal cursor, usually rendered as an arrow)
enum nsContentType { enum nsContentType {
eContentTypeInherit = -1, eContentTypeInherit = -1,
eContentTypeUI = 0, // eContentTypeUI must equal 0 eContentTypeUI = 0,
eContentTypeContent = 1 // eContentTypeContent must equal 1 eContentTypeContent = 1,
eContentTypeContentFrame = 2
}; };
enum nsTopLevelWidgetZPlacement { // for PlaceBehind() enum nsTopLevelWidgetZPlacement { // for PlaceBehind()

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

@ -4281,6 +4281,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
nsToolkit::mGetClassName((HWND)wParam, className, kMaxClassNameLength); nsToolkit::mGetClassName((HWND)wParam, className, kMaxClassNameLength);
if (wcscmp(className, kWClassNameUI) && if (wcscmp(className, kWClassNameUI) &&
wcscmp(className, kWClassNameContent) && wcscmp(className, kWClassNameContent) &&
wcscmp(className, kWClassNameContentFrame) &&
wcscmp(className, kWClassNameGeneral)) { wcscmp(className, kWClassNameGeneral)) {
isMozWindowTakingFocus = PR_FALSE; isMozWindowTakingFocus = PR_FALSE;
} }
@ -4398,6 +4399,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
nsToolkit::mGetClassName((HWND)wParam, className, kMaxClassNameLength); nsToolkit::mGetClassName((HWND)wParam, className, kMaxClassNameLength);
if (wcscmp(className, kWClassNameUI) && if (wcscmp(className, kWClassNameUI) &&
wcscmp(className, kWClassNameContent) && wcscmp(className, kWClassNameContent) &&
wcscmp(className, kWClassNameContentFrame) &&
wcscmp(className, kWClassNameGeneral)) { wcscmp(className, kWClassNameGeneral)) {
isMozWindowTakingFocus = PR_FALSE; isMozWindowTakingFocus = PR_FALSE;
} }
@ -4791,6 +4793,11 @@ LPCWSTR nsWindow::WindowClassW()
BOOL succeeded = nsToolkit::mRegisterClass(&wc) != 0; BOOL succeeded = nsToolkit::mRegisterClass(&wc) != 0;
nsWindow::sIsRegistered = succeeded; nsWindow::sIsRegistered = succeeded;
wc.lpszClassName = kWClassNameContentFrame;
if (!nsToolkit::mRegisterClass(&wc)) {
nsWindow::sIsRegistered = FALSE;
}
wc.lpszClassName = kWClassNameContent; wc.lpszClassName = kWClassNameContent;
if (!nsToolkit::mRegisterClass(&wc)) { if (!nsToolkit::mRegisterClass(&wc)) {
nsWindow::sIsRegistered = FALSE; nsWindow::sIsRegistered = FALSE;
@ -4817,6 +4824,9 @@ LPCWSTR nsWindow::WindowClassW()
if (mContentType == eContentTypeContent) { if (mContentType == eContentTypeContent) {
return kWClassNameContent; return kWClassNameContent;
} }
if (mContentType == eContentTypeContentFrame) {
return kWClassNameContentFrame;
}
if (mContentType == eContentTypeUI) { if (mContentType == eContentTypeUI) {
return kWClassNameUI; return kWClassNameUI;
} }
@ -4870,6 +4880,9 @@ LPCTSTR nsWindow::WindowClass()
if (classNameW == kWClassNameContent) { if (classNameW == kWClassNameContent) {
return kClassNameContent; return kClassNameContent;
} }
if (classNameW == kWClassNameContentFrame) {
return kClassNameContentFrame;
}
return kClassNameGeneral; return kClassNameGeneral;
} }

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

@ -83,15 +83,17 @@ class nsIFile;
* For example, changing the window classes * For example, changing the window classes
* could break touchpad scrolling or screen readers. * could break touchpad scrolling or screen readers.
*/ */
const PRUint32 kMaxClassNameLength = 40; const PRUint32 kMaxClassNameLength = 40;
const LPCWSTR kWClassNameHidden = L"MozillaHiddenWindowClass"; const LPCWSTR kWClassNameHidden = L"MozillaHiddenWindowClass";
const LPCWSTR kWClassNameUI = L"MozillaUIWindowClass"; const LPCWSTR kWClassNameUI = L"MozillaUIWindowClass";
const LPCWSTR kWClassNameContent = L"MozillaContentWindowClass"; const LPCWSTR kWClassNameContent = L"MozillaContentWindowClass";
const LPCWSTR kWClassNameGeneral = L"MozillaWindowClass"; const LPCWSTR kWClassNameContentFrame = L"MozillaContentFrameWindowClass";
const LPCSTR kClassNameHidden = "MozillaHiddenWindowClass"; const LPCWSTR kWClassNameGeneral = L"MozillaWindowClass";
const LPCSTR kClassNameUI = "MozillaUIWindowClass"; const LPCSTR kClassNameHidden = "MozillaHiddenWindowClass";
const LPCSTR kClassNameContent = "MozillaContentWindowClass"; const LPCSTR kClassNameUI = "MozillaUIWindowClass";
const LPCSTR kClassNameGeneral = "MozillaWindowClass"; const LPCSTR kClassNameContent = "MozillaContentWindowClass";
const LPCSTR kClassNameContentFrame = "MozillaContentFrameWindowClass";
const LPCSTR kClassNameGeneral = "MozillaWindowClass";
/** /**
* Native IMM wrapper * Native IMM wrapper