From 677775fe665e9facede7bff10200eb579a30a614 Mon Sep 17 00:00:00 2001 From: "hyatt%netscape.com" Date: Mon, 5 Jul 1999 19:38:43 +0000 Subject: [PATCH] Making sure dialogs really look like dialogs. git-svn-id: svn://10.0.0.236/trunk@38365 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/dom/src/base/nsGlobalWindow.cpp | 8 ++++++++ mozilla/webshell/public/nsIBrowserWindow.h | 2 ++ .../xpfe/appshell/src/nsAppShellService.cpp | 2 +- .../xpfe/appshell/src/nsWebShellWindow.cpp | 20 +++++++++++++++---- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index 4cd58d49f2e..1dfaaca1486 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -1913,6 +1913,11 @@ GlobalWindowImpl::OpenInternal(JSContext *cx, } chromeFlags = CalculateChromeFlags(options); + if (aAttachArguments) { + // Opening a dialog. + chromeFlags |= NS_CHROME_OPEN_AS_DIALOG; + } + nsIWebShell *newOuterShell = nsnull; nsIWebShellContainer *webShellContainer; @@ -2003,6 +2008,9 @@ GlobalWindowImpl::CalculateChromeFlags(char *aFeatures) { chromeFlags |= WinHasOption(aFeatures, "chrome") ? NS_CHROME_OPEN_AS_CHROME : 0; + chromeFlags |= WinHasOption(aFeatures, "modal") ? NS_CHROME_MODAL : 0; + chromeFlags |= WinHasOption(aFeatures, "dialog") ? NS_CHROME_OPEN_AS_DIALOG : 0; + /*z-ordering, history, dependent chromeFlags->topmost = WinHasOption(aFeatures, "alwaysRaised"); chromeFlags->bottommost = WinHasOption(aFeatures, "alwaysLowered"); diff --git a/mozilla/webshell/public/nsIBrowserWindow.h b/mozilla/webshell/public/nsIBrowserWindow.h index 17c455a1ba8..ad77f271c9e 100644 --- a/mozilla/webshell/public/nsIBrowserWindow.h +++ b/mozilla/webshell/public/nsIBrowserWindow.h @@ -46,6 +46,8 @@ struct nsRect; #define NS_CHROME_PERSONAL_TOOLBAR_ON 0x00000080 #define NS_CHROME_SCROLLBARS_ON 0x00000100 #define NS_CHROME_TITLEBAR_ON 0x00000200 +#define NS_CHROME_MODAL 0x20000000 +#define NS_CHROME_OPEN_AS_DIALOG 0x40000000 #define NS_CHROME_OPEN_AS_CHROME 0x80000000 #define NS_CHROME_ALL_CHROME 0x000003FF diff --git a/mozilla/xpfe/appshell/src/nsAppShellService.cpp b/mozilla/xpfe/appshell/src/nsAppShellService.cpp index 5bc66e535b6..28f3243da7d 100644 --- a/mozilla/xpfe/appshell/src/nsAppShellService.cpp +++ b/mozilla/xpfe/appshell/src/nsAppShellService.cpp @@ -554,7 +554,7 @@ nsAppShellService::CreateDialogWindow(nsIWebShellWindow * aParent, // temporarily disabling parentage because non-Windows platforms // seem to be interpreting it in unexpected ways. nsWidgetInitData widgetInitData; - widgetInitData.mBorderStyle = eBorderStyle_window; + widgetInitData.mBorderStyle = eBorderStyle_dialog; if (aInitialWidth == NS_SIZETOCONTENT || aInitialHeight == NS_SIZETOCONTENT) { diff --git a/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp b/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp index 36b44fc7679..fd206c63681 100644 --- a/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp +++ b/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp @@ -1395,10 +1395,18 @@ nsWebShellWindow::NewWebShell(PRUint32 aChromeMask, PRBool aVisible, nsCOMPtr newWindow; + PRBool openAsDialog = ((aChromeMask & NS_CHROME_OPEN_AS_DIALOG) != 0); + + // XXX Check modal chrome flag to run a modal dialog! + if ((aChromeMask & NS_CHROME_OPEN_AS_CHROME) != 0) { // Just do a nice normal create of a web shell and - // return it immediately. - rv = appShell->CreateTopLevelWindow(nsnull, nsnull, PR_FALSE, getter_AddRefs(newWindow), + // return it immediately. + + if (openAsDialog) + rv = appShell->CreateDialogWindow(nsnull, nsnull, PR_FALSE, getter_AddRefs(newWindow), + nsnull, nsnull, NS_SIZETOCONTENT, NS_SIZETOCONTENT); + else rv = appShell->CreateTopLevelWindow(nsnull, nsnull, PR_FALSE, getter_AddRefs(newWindow), nsnull, nsnull, NS_SIZETOCONTENT, NS_SIZETOCONTENT); if (NS_SUCCEEDED(rv)) { nsCOMPtr browser(do_QueryInterface(newWindow)); @@ -1440,9 +1448,13 @@ nsWebShellWindow::NewWebShell(PRUint32 aChromeMask, PRBool aVisible, NS_RELEASE(uri); #endif // NECKO - if (NS_SUCCEEDED(rv)) - rv = appShell->CreateTopLevelWindow(nsnull, urlObj, PR_FALSE, getter_AddRefs(newWindow), + if (NS_SUCCEEDED(rv)) { + if (openAsDialog) + rv = appShell->CreateDialogWindow(nsnull, urlObj, PR_FALSE, getter_AddRefs(newWindow), nsnull, nsnull, 615, 480); + else rv = appShell->CreateTopLevelWindow(nsnull, urlObj, PR_FALSE, getter_AddRefs(newWindow), + nsnull, nsnull, 615, 480); + } nsIAppShell *subshell; if (NS_SUCCEEDED(rv)) {