зеркало из https://github.com/mozilla/gecko-dev.git
Bug 261074 - onFocus fires twice when window is restored (Windows-only) r=Neil sr=roc
This commit is contained in:
Родитель
92e923268b
Коммит
c1b75ef02f
|
@ -4668,7 +4668,9 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_ACTIVATE:
|
case WM_ACTIVATE:
|
||||||
if (mEventCallback) {
|
// Check high-order word. If nonzero, this message is about the window
|
||||||
|
// being minimized and must be disregarded here.
|
||||||
|
if (mEventCallback && HIWORD(wParam) == 0) {
|
||||||
PRInt32 fActive = LOWORD(wParam);
|
PRInt32 fActive = LOWORD(wParam);
|
||||||
|
|
||||||
if (WA_INACTIVE == fActive) {
|
if (WA_INACTIVE == fActive) {
|
||||||
|
@ -4785,9 +4787,14 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||||
isMozWindowTakingFocus = PR_FALSE;
|
isMozWindowTakingFocus = PR_FALSE;
|
||||||
}
|
}
|
||||||
if (gJustGotDeactivate) {
|
if (gJustGotDeactivate) {
|
||||||
|
gJustGotActivate = PR_FALSE;
|
||||||
gJustGotDeactivate = PR_FALSE;
|
gJustGotDeactivate = PR_FALSE;
|
||||||
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
||||||
}
|
}
|
||||||
|
else if (gJustGotActivate) {
|
||||||
|
gJustGotActivate = PR_FALSE;
|
||||||
|
result = DispatchFocus(NS_ACTIVATE, PR_TRUE);
|
||||||
|
}
|
||||||
result = DispatchFocus(NS_LOSTFOCUS, isMozWindowTakingFocus);
|
result = DispatchFocus(NS_LOSTFOCUS, isMozWindowTakingFocus);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -4886,25 +4893,6 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||||
InitEvent(event);
|
InitEvent(event);
|
||||||
|
|
||||||
result = DispatchWindowEvent(&event);
|
result = DispatchWindowEvent(&event);
|
||||||
|
|
||||||
if (pl.showCmd == SW_SHOWMINIMIZED) {
|
|
||||||
// Deactivate
|
|
||||||
WCHAR className[kMaxClassNameLength];
|
|
||||||
::GetClassNameW((HWND)wParam, className, kMaxClassNameLength);
|
|
||||||
if (wcscmp(className, kWClassNameUI) &&
|
|
||||||
wcscmp(className, kWClassNameContent) &&
|
|
||||||
wcscmp(className, kWClassNameContentFrame) &&
|
|
||||||
wcscmp(className, kWClassNameDialog) &&
|
|
||||||
wcscmp(className, kWClassNameGeneral)) {
|
|
||||||
isMozWindowTakingFocus = PR_FALSE;
|
|
||||||
}
|
|
||||||
gJustGotDeactivate = PR_FALSE;
|
|
||||||
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
|
||||||
} else if (pl.showCmd == SW_SHOWNORMAL){
|
|
||||||
// Make sure we're active
|
|
||||||
result = DispatchFocus(NS_GOTFOCUS, PR_TRUE);
|
|
||||||
result = DispatchFocus(NS_ACTIVATE, PR_TRUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче