backing out danm's feb8 14:34 checkin to track down Ts regression. bug 124570

This commit is contained in:
endico%mozilla.org 2002-02-10 01:29:46 +00:00
Родитель 823c3988c3
Коммит 05857b5877
2 изменённых файлов: 16 добавлений и 15 удалений

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

@ -422,7 +422,7 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent)
case NS_MOVE: {
// persist position, but not immediately, in case this OS is firing
// repeated move events as the user drags the window
eventWindow->SetPersistenceTimer(PR_FALSE, PR_TRUE, PR_FALSE);
eventWindow->SetPersistenceTimer(PR_FALSE, PR_TRUE);
break;
}
case NS_SIZE: {
@ -432,17 +432,14 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent)
sizeEvent->windowSize->height, PR_FALSE);
// persist size, but not immediately, in case this OS is firing
// repeated size events as the user drags the sizing handle
eventWindow->SetPersistenceTimer(PR_TRUE, PR_FALSE, PR_TRUE);
eventWindow->SetPersistenceTimer(PR_TRUE, PR_FALSE);
result = nsEventStatus_eConsumeNoDefault;
break;
}
case NS_SIZEMODE: {
nsSizeModeEvent* modeEvent = (nsSizeModeEvent*)aEvent;
aEvent->widget->SetSizeMode(modeEvent->mSizeMode);
// persist mode, but not immediately, because in many (all?)
// cases this will merge with the similar call in NS_SIZE and
// write the attribute values only once.
eventWindow->SetPersistenceTimer(PR_FALSE, PR_FALSE, PR_TRUE);
eventWindow->StoreBoundsToXUL(PR_FALSE, PR_FALSE, PR_TRUE);
result = nsEventStatus_eConsumeDoDefault;
// Note the current implementation of SetSizeMode just stores
// the new state; it doesn't actually resize. So here we store
@ -595,7 +592,7 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent)
// since the window has been activated, replace persistent size data
// with the newly activated window's
if (eventWindow->mChromeLoaded)
eventWindow->PersistPositionAndSize(PR_TRUE, PR_TRUE, PR_TRUE);
eventWindow->StoreBoundsToXUL(PR_TRUE, PR_TRUE, PR_TRUE);
break;
}
@ -1156,14 +1153,13 @@ nsWebShellWindow::DestroyModalDialogEvent(PLEvent *aEvent)
}
void
nsWebShellWindow::SetPersistenceTimer(PRBool aSize, PRBool aPosition, PRBool aMode)
nsWebShellWindow::SetPersistenceTimer(PRBool aSize, PRBool aPosition)
{
PR_Lock(mSPTimerLock);
if (mSPTimer) {
mSPTimer->SetDelay(SIZE_PERSISTENCE_TIMEOUT);
mSPTimerSize |= aSize;
mSPTimerPosition |= aPosition;
mSPTimerMode |= aMode;
} else {
nsresult rv;
mSPTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
@ -1172,7 +1168,6 @@ nsWebShellWindow::SetPersistenceTimer(PRBool aSize, PRBool aPosition, PRBool aMo
SIZE_PERSISTENCE_TIMEOUT, NS_TYPE_ONE_SHOT);
mSPTimerSize = aSize;
mSPTimerPosition = aPosition;
mSPTimerMode = aMode;
}
}
PR_Unlock(mSPTimerLock);
@ -1185,8 +1180,7 @@ nsWebShellWindow::FirePersistenceTimer(nsITimer *aTimer, void *aClosure)
PR_Lock(win->mSPTimerLock);
win->mSPTimer = nsnull;
PR_Unlock(win->mSPTimerLock);
win->PersistPositionAndSize(win->mSPTimerPosition, win->mSPTimerSize,
win->mSPTimerMode);
win->StoreBoundsToXUL(win->mSPTimerPosition, win->mSPTimerSize, PR_FALSE);
}
@ -1385,6 +1379,12 @@ nsCOMPtr<nsIDOMDocument> nsWebShellWindow::GetNamedDOMDoc(const nsAString & aWeb
//----------------------------------------
/* copy the window's size and position to the window tag */
void nsWebShellWindow::StoreBoundsToXUL(PRBool aPosition, PRBool aSize, PRBool aSizeMode)
{
PersistPositionAndSize(aPosition, aSize, aSizeMode);
} // StoreBoundsToXUL
// if the main document URL specified URLs for any content areas, start them loading
void nsWebShellWindow::LoadContentAreas() {
@ -1737,7 +1737,7 @@ NS_IMETHODIMP nsWebShellWindow::Destroy()
if (mSPTimer) {
mSPTimer->Cancel();
mSPTimer = nsnull;
PersistPositionAndSize(mSPTimerPosition, mSPTimerSize, mSPTimerMode);
StoreBoundsToXUL(mSPTimerPosition, mSPTimerSize, PR_FALSE);
}
PR_Unlock(mSPTimerLock);

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

@ -184,6 +184,7 @@ protected:
nsCOMPtr<nsIDOMNode> GetDOMNodeFromWebShell(nsIWebShell *aShell);
void ExecuteStartupCode();
void StoreBoundsToXUL(PRBool aPosition, PRBool aSize, PRBool aSizeMode);
void LoadContentAreas();
PRBool ExecuteCloseHandler();
@ -202,11 +203,11 @@ protected:
nsIDOMNode * contextMenuTest;
nsCOMPtr<nsITimer> mSPTimer;
PRBool mSPTimerSize, mSPTimerPosition, mSPTimerMode;
PRBool mSPTimerSize, mSPTimerPosition;
PRLock * mSPTimerLock;
nsCOMPtr<nsIPrompt> mPrompter;
void SetPersistenceTimer(PRBool aSize, PRBool aPosition, PRBool aMode);
void SetPersistenceTimer(PRBool aSize, PRBool aPosition);
static void FirePersistenceTimer(nsITimer *aTimer, void *aClosure);
private: