X-Git-Url: http://git.phpeclipse.com

diff --git a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java
index 92face4..852b24d 100644
--- a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java
+++ b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java
@@ -10,13 +10,20 @@
  *******************************************************************************/
 package net.sourceforge.phpeclipse.webbrowser.views;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowser;
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUtil;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.browser.CloseWindowListener;
 import org.eclipse.swt.browser.ProgressListener;
 import org.eclipse.swt.browser.StatusTextListener;
 import org.eclipse.swt.browser.TitleListener;
+import org.eclipse.swt.browser.WindowEvent;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.part.IShowInTarget;
 import org.eclipse.ui.part.ShowInContext;
@@ -45,6 +52,15 @@ public class BrowserView extends ViewPart implements IShowInTarget {
 		try {
 			if (WebBrowserUtil.isInternalBrowserOperational()) {
 				fInstance = new WebBrowser(frame, true, true);
+				// #1365431 (toshihiro) start
+				fInstance.getBrowser().addCloseWindowListener(
+						new CloseWindowListener() {
+							public void close(WindowEvent event) {
+								getViewSite().getPage().hideView(
+										BrowserView.this);
+							}
+						});
+				// #1365431 (toshihiro) end
 			}
 		} catch (Exception e) {
 			fInstance = null;
@@ -84,7 +100,7 @@ public class BrowserView extends ViewPart implements IShowInTarget {
 			// }
 			// }, null);
 			// } catch (CoreException e) {
-			// // TODO Auto-generated catch block
+			// // TO DO Auto-generated catch block
 			// e.printStackTrace();
 			// }
 		}
@@ -100,18 +116,29 @@ public class BrowserView extends ViewPart implements IShowInTarget {
 			// }
 			// }, null);
 			// } catch (CoreException e) {
-			// // TODO Auto-generated catch block
+			// // TO DO Auto-generated catch block
 			// e.printStackTrace();
 			// }
 		}
 	}
 
 	public void refresh(String url) {
-		if (fInstance != null) {
-			if (fUrl == null || !fUrl.equals(url)) {
+		if (fInstance != null && url != null) {
+			if (fUrl == null) {
 				setUrl(url);
 			} else {
-				refresh();
+				Browser browser = fInstance.getBrowser();
+				if (browser != null) {
+					String browserUrl = browser.getUrl();
+					try {
+						browserUrl = URLDecoder.decode(browserUrl, Charset.defaultCharset().name());
+					} catch (UnsupportedEncodingException e) {
+						// e.printStackTrace();
+					}
+					if (!url.equals(browserUrl)) {
+						setUrl(url);
+					}
+				}
 			}
 		}
 	}