Bug#486744: Looks like an epiphany problem, in the end...

Mike Hommey mh at glandium.org
Sun Sep 28 14:23:44 UTC 2008


tag 486744 + patch
thanks

On Sun, Sep 28, 2008 at 02:52:19PM +0200, Mike Hommey wrote:
> reassign 486744 epiphany-gecko
> thanks
> 
> See https://bugzilla.mozilla.org/show_bug.cgi?id=444894#c19

I tried two approaches, one looking much better than the other.

The first patch (the longest one) solves the crash, while apparently
keeping epiphany's zoom behaviour of keeping zoom level on a website,
but changing the zoom level back to 1.0 when going to a new website.

The second patch (the one-liner) solves the crash too, but has odd
behaviour wrt zoom level when going back/forward in history: it keeps
the current zoom level when going on a new website, but will reset to
1.0 when hitting the back and forward buttons.

The first patch sounds like the right fix, though I don't know what
weird side effects could show up.

Mike
-------------- next part --------------
--- epiphany-browser-2.22.3.orig/embed/mozilla/EphyBrowser.h
+++ epiphany-browser-2.22.3/embed/mozilla/EphyBrowser.h
@@ -208,6 +208,7 @@
 	nsCOMPtr<nsIWebBrowser> mWebBrowser;
 private:
 	GtkWidget *mEmbed;
+	float mZoom;
 
 	nsCOMPtr<nsIWebBrowserFocus> mWebBrowserFocus;
 	nsCOMPtr<nsIDOMDocument> mTargetDocument;
--- epiphany-browser-2.22.3.orig/embed/mozilla/EphyBrowser.cpp
+++ epiphany-browser-2.22.3/embed/mozilla/EphyBrowser.cpp
@@ -830,6 +830,7 @@
 #endif
 , mContextMenuListener(nsnull)
 , mInitialized(PR_FALSE)
+, mZoom(0.0)
 {
 	LOG ("EphyBrowser ctor (%p)", this);
 }
@@ -1192,7 +1193,9 @@
 	nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer);
 	NS_ENSURE_TRUE (mdv, NS_ERROR_FAILURE);
 
-	return mdv->SetTextZoom (aZoom);
+	nsresult rv = mdv->SetTextZoom (aZoom);
+	mZoom = aZoom;
+	return rv;
 }
 
 nsresult EphyBrowser::GetContentViewer (nsIContentViewer **aViewer)
@@ -1207,6 +1210,10 @@
 
 nsresult EphyBrowser::GetZoom (float *aZoom)
 {
+	if (mZoom != 0) {
+		*aZoom = mZoom;
+		return NS_OK;
+	}
 	NS_ENSURE_TRUE (mWebBrowser, NS_ERROR_FAILURE);
 
 	nsCOMPtr<nsIContentViewer> contentViewer;	
@@ -1216,7 +1223,9 @@
 	nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer);
 	NS_ENSURE_TRUE (mdv, NS_ERROR_FAILURE);
 
-	return mdv->GetTextZoom (aZoom);
+	nsresult rv = mdv->GetTextZoom (aZoom);
+	mZoom = *aZoom;
+	return rv;
 }
 
 nsresult
-------------- next part --------------
--- epiphany-browser-2.22.3.orig/embed/mozilla/mozilla-embed.cpp
+++ epiphany-browser-2.22.3/embed/mozilla/mozilla-embed.cpp
@@ -1001,7 +1001,6 @@
 			char *address;
 			address = gtk_moz_embed_get_location (moz_embed);
 			ephy_base_embed_popups_manager_reset (EPHY_BASE_EMBED (membed));
-			ephy_base_embed_restore_zoom_level (EPHY_BASE_EMBED (membed), address);
 			g_free (address);
 		}
 	}


More information about the pkg-gnome-maintainers mailing list