Bug 425844 - clean up menu state after Carbon print dialogs. r=josh, a=dveditz

git-svn-id: svn://10.0.0.236/trunk@256050 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
jdaggett%mozilla.com 2009-02-03 04:12:15 +00:00
parent 0febd7a927
commit 8bea0d6ace
4 changed files with 50 additions and 3 deletions

View File

@ -229,6 +229,10 @@ nsPrintingPromptService::ShowPrintDialog(nsIDOMWindow *parent, nsIWebBrowserPrin
if (!printSettingsX) if (!printSettingsX)
return NS_ERROR_NO_INTERFACE; return NS_ERROR_NO_INTERFACE;
nsCOMPtr<nsIPrintSettingsX_MOZILLA_1_9_BRANCH> printSettingsX_1_9(do_QueryInterface(printSettings));
if (!printSettingsX_1_9)
return NS_ERROR_NO_INTERFACE;
PMPrintSession printSession; PMPrintSession printSession;
rv = printSettingsX->GetNativePrintSession(&printSession); rv = printSettingsX->GetNativePrintSession(&printSession);
if (NS_FAILED(rv)) if (NS_FAILED(rv))
@ -346,6 +350,8 @@ nsPrintingPromptService::ShowPrintDialog(nsIDOMWindow *parent, nsIWebBrowserPrin
Boolean accepted; Boolean accepted;
status = ::PMSessionPrintDialog(printSession, nativePrintSettings, pageFormat, &accepted); status = ::PMSessionPrintDialog(printSession, nativePrintSettings, pageFormat, &accepted);
printSettingsX_1_9->CleanUpAfterCarbonDialog();
if (status == noErr && accepted) { if (status == noErr && accepted) {
int pageRange = -1; int pageRange = -1;
@ -463,6 +469,10 @@ nsPrintingPromptService::ShowPageSetup(nsIDOMWindow *parent, nsIPrintSettings *p
if (!printSettingsX) if (!printSettingsX)
return NS_ERROR_NO_INTERFACE; return NS_ERROR_NO_INTERFACE;
nsCOMPtr<nsIPrintSettingsX_MOZILLA_1_9_BRANCH> printSettingsX_1_9(do_QueryInterface(printSettings));
if (!printSettingsX_1_9)
return NS_ERROR_NO_INTERFACE;
OSStatus status; OSStatus status;
PMPrintSession printSession; PMPrintSession printSession;
@ -484,6 +494,8 @@ nsPrintingPromptService::ShowPageSetup(nsIDOMWindow *parent, nsIPrintSettings *p
Boolean accepted = false; Boolean accepted = false;
status = ::PMSessionPageSetupDialog(printSession, pageFormat, &accepted); status = ::PMSessionPageSetupDialog(printSession, pageFormat, &accepted);
printSettingsX_1_9->CleanUpAfterCarbonDialog();
OSStatus tempStatus = ::PMRelease(printSession); OSStatus tempStatus = ::PMRelease(printSession);
if (status == noErr) if (status == noErr)
status = tempStatus; status = tempStatus;

View File

@ -88,3 +88,16 @@ interface nsIPrintSettingsX : nsISupports
[noscript] void readPageFormatFromPrefs(); [noscript] void readPageFormatFromPrefs();
[noscript] void writePageFormatToPrefs(); [noscript] void writePageFormatToPrefs();
}; };
[scriptable, uuid(30B29956-7E22-412A-82C2-31086B248102)]
interface nsIPrintSettingsX_MOZILLA_1_9_BRANCH : nsISupports
{
/**
* cleanUpAfterCarbonDialog
*
* After bringing up Carbon print dialogs, clean up menus.
* See bug 425844 for details.
*/
[noscript] void cleanUpAfterCarbonDialog();
};

View File

@ -47,11 +47,13 @@
//***************************************************************************** //*****************************************************************************
class nsPrintSettingsX : public nsPrintSettings, class nsPrintSettingsX : public nsPrintSettings,
public nsIPrintSettingsX public nsIPrintSettingsX,
public nsIPrintSettingsX_MOZILLA_1_9_BRANCH
{ {
public: public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIPRINTSETTINGSX NS_DECL_NSIPRINTSETTINGSX
NS_DECL_NSIPRINTSETTINGSX_MOZILLA_1_9_BRANCH
nsPrintSettingsX(); nsPrintSettingsX();
virtual ~nsPrintSettingsX(); virtual ~nsPrintSettingsX();

View File

@ -59,6 +59,8 @@ struct FrozenHandle {
#define PRINTING_PREF_BRANCH "print." #define PRINTING_PREF_BRANCH "print."
#define MAC_OS_X_PAGE_SETUP_PREFNAME "macosx.pagesetup-2" #define MAC_OS_X_PAGE_SETUP_PREFNAME "macosx.pagesetup-2"
#include "nsCocoaWindow.h"
#include "nsMenuBarX.h"
/** ------------------------------------------------------------ /** ------------------------------------------------------------
@ -141,9 +143,10 @@ protected:
}; };
NS_IMPL_ISUPPORTS_INHERITED1(nsPrintSettingsX, NS_IMPL_ISUPPORTS_INHERITED2(nsPrintSettingsX,
nsPrintSettings, nsPrintSettings,
nsIPrintSettingsX) nsIPrintSettingsX,
nsIPrintSettingsX_MOZILLA_1_9_BRANCH)
/** --------------------------------------------------- /** ---------------------------------------------------
*/ */
@ -557,3 +560,20 @@ OSStatus nsPrintSettingsX::CreateDefaultPrintSettings(PMPrintSession aSession, P
NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(noErr); NS_OBJC_END_TRY_ABORT_BLOCK_RETURN(noErr);
} }
NS_IMETHODIMP nsPrintSettingsX::CleanUpAfterCarbonDialog()
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
NSWindow* mainWindow = [NSApp mainWindow];
if (mainWindow) {
[WindowDelegate paintMenubarForWindow:mainWindow];
} else {
nsIMenuBar* hiddenWindowMenuBar = MenuHelpersX::GetHiddenWindowMenuBar();
if (hiddenWindowMenuBar)
hiddenWindowMenuBar->Paint();
}
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
}