[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-distro-pkg-dev
Subject:    /hg/icedtea-web: Patch to permanantly fix frame pop-out issue fo...
From:       dbhole () redhat ! com (Deepak Bhole)
Date:       2010-11-29 16:09:10
Message-ID: 20101129160910.GD24721 () redhat ! com
[Download RAW message or body]

Just an FYI.. this was approved a while ago.. I just forgot to commit it
and noticed it now as I was going through my workspace gearing up for
1.0:

http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-November/010814.html

Deepak

* dbhole at icedtea.classpath.org <dbhole at icedtea.classpath.org> [2010-11-29 \
10:39]:
> changeset c267c4e2b844 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=c267c4e2b844
>                 
> author: Deepak Bhole <dbhole at redhat.com>
> date: Mon Nov 29 10:19:17 2010 -0500
> 
> 	Patch to permanantly fix frame pop-out issue for applets Also fixes
> 	inability to enter text in applet fields in certain cases
> 
> 
> diffstat:
> 
> 2 files changed, 33 insertions(+), 45 deletions(-)
> ChangeLog                                                |   11 ++
> plugin/icedteanp/java/sun/applet/PluginAppletViewer.java |   67 ++++----------
> 
> diffs (138 lines):
> 
> diff -r 99f8df2ec04b -r c267c4e2b844 ChangeLog
> --- a/ChangeLog	Mon Nov 29 15:56:06 2010 +0100
> +++ b/ChangeLog	Mon Nov 29 10:19:17 2010 -0500
> @@ -1,3 +1,14 @@ 2010-11-25  Andrew John Hughes  <ahughes
> +2010-11-29  Deepak Bhole <dbhole at redhat.com>
> +
> +	* plugin/icedteanp/java/sun/applet/PluginAppletViewer.java
> +	(createPanel): Call the new framePanel() method with the proper handle.
> +	(framePanel): New method, renamed from reFrame. Changed to now do one-time
> +	framing of panel into the plugin.
> +	(handleMessage): Don't re-frame the panel. Panel is now framed only once.
> +	(destroyApplet): Dispose the frame right away, and try to remove the panel
> +	if possible. If not, handleMessage() will do it when the panel is
> +	ready/removable.
> +
> 2010-11-25  Andrew John Hughes  <ahughes at redhat.com>
> 
> 	* Makefile.am:
> diff -r 99f8df2ec04b -r c267c4e2b844 \
>                 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java
> --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java	Mon Nov 29 15:56:06 \
>                 2010 +0100
> +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java	Mon Nov 29 10:19:17 \
> 2010 -0500 @@ -138,7 +138,7 @@ import com.sun.jndi.toolkit.url.UrlUtil;
> });
> 
> // create the frame.
> -         PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel);
> +         PluginAppletViewer.framePanel(identifier, System.out, handle, panel);
> 
> panel.init();
> 
> @@ -368,42 +368,25 @@ import com.sun.jndi.toolkit.url.UrlUtil;
> public PluginAppletViewer() {
> }
> 
> -     public static void reFrame(PluginAppletViewer oldFrame, 
> -                         int identifier, PrintStream statusMsgStream, 
> -                         long handle, AppletViewerPanel panel) {
> +     public static void framePanel(int identifier, PrintStream statusMsgStream, 
> +                         	  long handle, AppletViewerPanel panel) {
> 
> -         PluginDebug.debug("Reframing " + panel);
> +         PluginDebug.debug("Framing " + panel);
> 
> // SecurityManager MUST be set, and only privileged code may call reFrame()
> System.getSecurityManager().checkPermission(new AllPermission());
> 
> -         // Same handle => nothing to do
> -         if (oldFrame != null && handle == oldFrame.handle)
> -             return;
> +         PluginAppletViewer appletFrame = new PluginAppletViewer(handle, \
> identifier, statusMsgStream, panel); +         
> +         appletFrame.add("Center", panel);
> +         appletFrame.pack();
> 
> -         PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, \
>                 statusMsgStream, panel);
> -         
> -         if (oldFrame != null) {
> -             applets.remove(oldFrame.identifier);
> -             oldFrame.removeWindowListener(oldFrame.windowEventListener);
> -             panel.removeAppletListener(oldFrame.appletEventListener);
> +         appletFrame.appletEventListener = new AppletEventListener(appletFrame, \
> appletFrame); +         panel.addAppletListener(appletFrame.appletEventListener);
> 
> -			 // Add first, remove later
> -             newFrame.add("Center", panel);
> -             oldFrame.remove(panel);
> -             oldFrame.dispose();
> -         } else {
> -	         newFrame.add("Center", panel);
> -         }
> +         applets.put(identifier, appletFrame);
> 
> -         newFrame.pack();
> -
> -         newFrame.appletEventListener = new AppletEventListener(newFrame, \
>                 newFrame);
> -         panel.addAppletListener(newFrame.appletEventListener);
> -
> -         applets.put(identifier, newFrame);
> -
> -         PluginDebug.debug(panel + " reframed");
> +         PluginDebug.debug(panel + " framed");
> }
> 
> /**
> @@ -581,18 +564,9 @@ import com.sun.jndi.toolkit.url.UrlUtil;
> waitForAppletInit((NetxPanel) applets.get(identifier).panel);
> 
> // Should we proceed with reframing?
> -                 if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) {
> +                 if (updateStatus(identifier, \
> PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { \
> destroyApplet(identifier); return;
> -                 }
> -
> -                 // Proceed with re-framing
> -          		 reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel);
> -
> -                 // There is a slight chance that destroy can happen 
> -                 // between the above and below line
> -                 if (updateStatus(identifier, \
>                 PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) \
>                 {
> -                     destroyApplet(identifier);
> }
> 
> } else if (message.startsWith("destroy")) {
> @@ -691,16 +665,19 @@ import com.sun.jndi.toolkit.url.UrlUtil;
> 		 return;
> 	 }
> 
> -    	 // If already disposed, return
> -    	 if (applets.get(identifier).panel.applet == null) {
> -    		 // Try to still dispose the panel itself -- no harm done with double \
> dispose +    	 PluginDebug.debug("Attempting to destroy frame " + identifier);
> +    	 
> +    	 // Try to dispose the panel right away
> +    	 if (applets.containsKey(identifier)) 
> 		 applets.get(identifier).dispose();
> 
> -    		 PluginDebug.debug(identifier + " inactive. Returning.");
> +    	 // If panel is already disposed, return
> +    	 if (applets.get(identifier).panel.applet == null) {
> +    		 PluginDebug.debug(identifier + " panel inactive. Returning.");
> 		 return;
> 	 }
> 
> -    	 PluginDebug.debug("Attempting to destroy " + identifier);
> +    	 PluginDebug.debug("Attempting to destroy panel " + identifier);
> 
> 	 final int fIdentifier = identifier;
> 		 SwingUtilities.invokeLater(new Runnable() {
> @@ -1674,7 +1651,7 @@ import com.sun.jndi.toolkit.url.UrlUtil;
> public void run()
> {
> ThreadGroup tg = ((JNLPClassLoader) \
>                 p.applet.getClass().getClassLoader()).getApplication().getThreadGroup();
>                 
> -                
> +
> appletShutdown(p);
> appletPanels.removeElement(p);
> dispose();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic