aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--embed/mozilla/ContentHandler.cpp9
-rw-r--r--embed/mozilla/MozillaPrivate.cpp24
3 files changed, 26 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 9ded879d3..d2f06b156 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2004-02-28 Marco Pesenti Gritti <marco@gnome.org>
+ * embed/mozilla/ContentHandler.cpp:
+
+ Use getInterface to get the dom window from the
+ docshell, not queryInterface. (Bug #121160)
+
+ * embed/mozilla/MozillaPrivate.cpp:
+
+ Do not fallback to the active window if
+ the parent cannot be found. It just hides problems
+ and cause more annoying behaviors (like dialogs
+ parented on the wrong window).
+
+2004-02-28 Marco Pesenti Gritti <marco@gnome.org>
+
* HACKING:
Add a note about changelog entry.
diff --git a/embed/mozilla/ContentHandler.cpp b/embed/mozilla/ContentHandler.cpp
index 622c95ca7..a92965638 100644
--- a/embed/mozilla/ContentHandler.cpp
+++ b/embed/mozilla/ContentHandler.cpp
@@ -34,8 +34,7 @@
#include "nsIURL.h"
#include "nsILocalFile.h"
#include "nsIMIMEInfo.h"
-
-#include "nsIWebNavigation.h" // Needed to create the LoadType flag
+#include "nsIInterfaceRequestorUtils.h"
#include "ephy-prefs.h"
#include "eel-gconf-extensions.h"
@@ -129,7 +128,7 @@ NS_IMETHODIMP GContentHandler::PromptForSaveToFile(
_retval);
}
- nsCOMPtr<nsIDOMWindow> parentDOMWindow = do_QueryInterface (aWindowContext);
+ nsCOMPtr<nsIDOMWindow> parentDOMWindow = do_GetInterface (aWindowContext);
GtkWidget *parentWindow = GTK_WIDGET (MozillaFindGtkParent (parentDOMWindow));
dialog = ephy_file_chooser_new (_("Save"), parentWindow,
@@ -257,7 +256,7 @@ NS_METHOD GContentHandler::MIMEConfirmAction (PRBool autoDownload)
char *text;
int response;
- nsCOMPtr<nsIDOMWindow> parentDOMWindow = do_QueryInterface (mContext);
+ nsCOMPtr<nsIDOMWindow> parentDOMWindow = do_GetInterface (mContext);
GtkWindow *parentWindow = GTK_WINDOW (MozillaFindGtkParent(parentDOMWindow));
dialog = gtk_dialog_new_with_buttons
@@ -278,8 +277,6 @@ NS_METHOD GContentHandler::MIMEConfirmAction (PRBool autoDownload)
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox,
TRUE, TRUE, 0);
- g_print ("AAA %d %p", mPermission, mHelperApp);
-
if (mPermission == EPHY_MIME_PERMISSION_UNSAFE && mHelperApp)
{
text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
diff --git a/embed/mozilla/MozillaPrivate.cpp b/embed/mozilla/MozillaPrivate.cpp
index d83509119..aacb2c629 100644
--- a/embed/mozilla/MozillaPrivate.cpp
+++ b/embed/mozilla/MozillaPrivate.cpp
@@ -35,27 +35,21 @@
GtkWidget *MozillaFindEmbed (nsIDOMWindow *aDOMWindow)
{
+ if (!aDOMWindow) return nsnull;
+
nsCOMPtr<nsIWindowWatcher> wwatch
(do_GetService("@mozilla.org/embedcomp/window-watcher;1"));
NS_ENSURE_TRUE (wwatch, nsnull);
- nsCOMPtr<nsIDOMWindow> domWindow;
- if (aDOMWindow)
- {
- /* this DOM window may belong to some inner frame, we need
- * to get the topmost DOM window to get the embed
- */
- aDOMWindow->GetTop (getter_AddRefs (domWindow));
- }
- else
- {
- /* get the active window */
- wwatch->GetActiveWindow (getter_AddRefs(domWindow));
- }
- NS_ENSURE_TRUE (domWindow, nsnull);
+ /* this DOM window may belong to some inner frame, we need
+ * to get the topmost DOM window to get the embed
+ */
+ nsCOMPtr<nsIDOMWindow> topWindow;
+ aDOMWindow->GetTop (getter_AddRefs (topWindow));
+ if (!topWindow) return nsnull;
nsCOMPtr<nsIWebBrowserChrome> windowChrome;
- wwatch->GetChromeForWindow (domWindow, getter_AddRefs(windowChrome));
+ wwatch->GetChromeForWindow (topWindow, getter_AddRefs(windowChrome));
NS_ENSURE_TRUE (windowChrome, nsnull);
nsCOMPtr<nsIEmbeddingSiteWindow> window (do_QueryInterface(windowChrome));