From eb1bbfb2345687fc2cbd17864e4d3417fd3b4631 Mon Sep 17 00:00:00 2001 From: "jst%mozilla.jstenback.com" Date: Fri, 20 Aug 2004 15:08:28 +0000 Subject: [PATCH] Fixing bug 256235. Can't download files (no filepicker displayed), apparently XP-SP2 only. r+sr=shaver@mozilla.org git-svn-id: svn://10.0.0.236/trunk@161056 18797224-902f-48f8-a5cc-f745e15eee43 --- .../widget/src/xpwidgets/nsBaseFilePicker.cpp | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp b/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp index 4b00c79d971..fa8a6000176 100644 --- a/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp +++ b/mozilla/widget/src/xpwidgets/nsBaseFilePicker.cpp @@ -42,9 +42,9 @@ #include "nsIDOMWindow.h" #include "nsIScriptGlobalObject.h" #include "nsIDocShell.h" +#include "nsIBaseWindow.h" #include "nsIContentViewer.h" #include "nsIDocumentViewer.h" -#include "nsIPresShell.h" #include "nsIViewManager.h" #include "nsIView.h" #include "nsIWidget.h" @@ -75,26 +75,21 @@ nsBaseFilePicker::~nsBaseFilePicker() nsIWidget *nsBaseFilePicker::DOMWindowToWidget(nsIDOMWindow *dw) { + nsCOMPtr widget; + nsCOMPtr sgo = do_QueryInterface(dw); if (sgo) { - nsIDocShell *docShell = sgo->GetDocShell(); - - if (docShell) { - nsCOMPtr presShell; - nsresult rv = docShell->GetPresShell(getter_AddRefs(presShell)); + nsCOMPtr baseWin(do_QueryInterface(sgo->GetDocShell())); - if (NS_SUCCEEDED(rv) && presShell) { - nsIView *view; - rv = presShell->GetViewManager()->GetRootView(view); - - if (NS_SUCCEEDED(rv)) { - return view->GetWidget(); - } - } + if (baseWin) { + baseWin->GetParentWidget(getter_AddRefs(widget)); } } - return nsnull; + // This will return a pointer that we're about to release, but + // that's ok since the docshell (nsIBaseWindow) holds the widget + // alive. + return widget.get(); } //-------------------------------------------------------------------------