[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

cblu cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:14:41 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 79198de2396681c83e3d54735a3232139aa3cf66
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Nov 21 19:14:23 2003 +0000

    	Fixed: <rdar://problem/3491907>: When viewing applet, view hierarchy was an empty KWQView
    
            Reviewed by rjw.
    
            * WebCore.pbproj/project.pbxproj:
            * khtml/html/html_objectimpl.cpp: removed setupApplet because that work is done when the applet widget is created
            (HTMLAppletElementImpl::createRenderer): pass the PARAM args to the render object
            (HTMLAppletElementImpl::getAppletInstance): don't call setupApplet
            * khtml/rendering/render_applet.cpp:
            (RenderApplet::RenderApplet): store args and context, don't call setQWidget here
            (RenderApplet::setStyle): call setQWidget here
            (RenderApplet::layout): don't parse args here, that is done in HTMLAppletElementImpl::createRenderer
            * khtml/rendering/render_applet.h:
            * kwq/KWQKJavaAppletWidget.h:
            (KJavaApplet::KJavaApplet): turned into a stub, this work is no longer needed
            (KJavaApplet::setAppletClass): ditto
            (KJavaApplet::setAppletName): ditto
            (KJavaApplet::setArchives): ditto
            (KJavaApplet::setBaseURL): ditto
            (KJavaApplet::setCodeBase): ditto
            (KJavaApplet::setParameter): ditto
            (KJavaAppletWidget::~KJavaAppletWidget): ditto
            (KJavaAppletWidget::applet): ditto
            (KJavaAppletWidget::setBaseURL): ditto
            (KJavaAppletWidget::setParameter): ditto
            (KJavaAppletWidget::showApplet): ditto
            * kwq/KWQKJavaAppletWidget.mm:
            (KJavaAppletWidget::KJavaAppletWidget): create the java here instead of doing it later
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5624 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 8cadbdf..a7a7eff 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,34 @@
+2003-11-21  Chris Blumenberg  <cblu at apple.com>
+
+	Fixed: <rdar://problem/3491907>: When viewing applet, view hierarchy was an empty KWQView
+
+        Reviewed by rjw.
+
+        * WebCore.pbproj/project.pbxproj:
+        * khtml/html/html_objectimpl.cpp: removed setupApplet because that work is done when the applet widget is created
+        (HTMLAppletElementImpl::createRenderer): pass the PARAM args to the render object
+        (HTMLAppletElementImpl::getAppletInstance): don't call setupApplet
+        * khtml/rendering/render_applet.cpp:
+        (RenderApplet::RenderApplet): store args and context, don't call setQWidget here 
+        (RenderApplet::setStyle): call setQWidget here
+        (RenderApplet::layout): don't parse args here, that is done in HTMLAppletElementImpl::createRenderer
+        * khtml/rendering/render_applet.h:
+        * kwq/KWQKJavaAppletWidget.h:
+        (KJavaApplet::KJavaApplet): turned into a stub, this work is no longer needed
+        (KJavaApplet::setAppletClass): ditto
+        (KJavaApplet::setAppletName): ditto
+        (KJavaApplet::setArchives): ditto
+        (KJavaApplet::setBaseURL): ditto
+        (KJavaApplet::setCodeBase): ditto
+        (KJavaApplet::setParameter): ditto
+        (KJavaAppletWidget::~KJavaAppletWidget): ditto
+        (KJavaAppletWidget::applet): ditto
+        (KJavaAppletWidget::setBaseURL): ditto
+        (KJavaAppletWidget::setParameter): ditto
+        (KJavaAppletWidget::showApplet): ditto 
+        * kwq/KWQKJavaAppletWidget.mm:
+        (KJavaAppletWidget::KJavaAppletWidget): create the java here instead of doing it later
+
 2003-11-21  John Sullivan  <sullivan at apple.com>
 
         - WebCore part of fix for <rdar://problem/3333744>: Safari prints page with 
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index a90e7fb..52498f7 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -8303,13 +8303,15 @@
 		};
 		F587864302DE3A1601EA4122 = {
 			children = (
-				F587864802DE3A7801EA4122,
 				F587863302DE3A1401EA4122,
 				F587863402DE3A1401EA4122,
 				F58784F702DE375901EA4122,
 				F587863502DE3A1401EA4122,
 				F587863702DE3A1401EA4122,
 				F587863A02DE3A1401EA4122,
+				F587864402DE3A7701EA4122,
+				F587864502DE3A7701EA4122,
+				F58784FF02DE375901EA4122,
 			);
 			isa = PBXGroup;
 			name = khtml;
@@ -8345,18 +8347,6 @@
 			settings = {
 			};
 		};
-		F587864802DE3A7801EA4122 = {
-			children = (
-				F587864402DE3A7701EA4122,
-				F587864502DE3A7701EA4122,
-				F58784FF02DE375901EA4122,
-			);
-			isa = PBXGroup;
-			name = java;
-			path = "";
-			refType = 4;
-			sourceTree = "<group>";
-		};
 		F587864902DE3A9A01EA4122 = {
 			expectedFileType = sourcecode.c.h;
 			fileEncoding = 30;
diff --git a/WebCore/khtml/html/html_objectimpl.cpp b/WebCore/khtml/html/html_objectimpl.cpp
index aa6e702..8c6df7f 100644
--- a/WebCore/khtml/html/html_objectimpl.cpp
+++ b/WebCore/khtml/html/html_objectimpl.cpp
@@ -124,6 +124,16 @@ RenderObject *HTMLAppletElementImpl::createRenderer(RenderArena *arena, RenderSt
 	    args.insert( "archive", archive.string() );
 
 	args.insert( "baseURL", getDocument()->baseURL() );
+#if APPLE_CHANGES
+        NodeImpl *child = firstChild();
+        while (child) {
+            if (child->id() == ID_PARAM) {
+                HTMLParamElementImpl *p = static_cast<HTMLParamElementImpl *>(child);
+                args.insert(p->name(), p->value());
+            }
+            child = child->nextSibling();
+        }
+#endif
         return new (getDocument()->renderArena()) RenderApplet(this, args);
     }
 
@@ -166,31 +176,6 @@ bool HTMLAppletElementImpl::callMember(const QString & name, const QStringList &
 }
 
 #if APPLE_CHANGES
-void HTMLAppletElementImpl::setupApplet() const
-{
-    RenderApplet *r = static_cast<RenderApplet*>(m_render);
-    if (r && r->widget()){
-        KJavaAppletWidget *javaWidget = static_cast<KJavaAppletWidget*>(static_cast<RenderApplet*>(m_render)->widget());
-        
-        // Make sure all the parameters are set.
-        NodeImpl *child = firstChild();
-        while(child) {
-    
-            if(child->id() == ID_PARAM) {
-                HTMLParamElementImpl *p = static_cast<HTMLParamElementImpl *>(child);
-                if(javaWidget->applet())
-                    javaWidget->applet()->setParameter( p->name(), p->value());
-            }
-            child = child->nextSibling();
-        }
-        
-        // Create the plugin view for the applet.
-        // FIXME?  What about percent and variable widths/heights?
-        // FIXME?  What about padding and margins?
-        javaWidget->showApplet(r->style()->width().value, r->style()->height().value);
-    }
-}
-
 Bindings::Instance *HTMLAppletElementImpl::getAppletInstance() const
 {
     if (appletInstance)
@@ -198,10 +183,6 @@ Bindings::Instance *HTMLAppletElementImpl::getAppletInstance() const
     
     RenderApplet *r = static_cast<RenderApplet*>(m_render);
     if (r && r->widget()){
-        // Make sure we've setup the applet.  This ensure that the applet
-        // will be returned from getAppletInstanceForView() below.
-        setupApplet();
-        
         // Call into the part (and over the bridge) to pull the Bindings::Instance
         // from the guts of the Java VM.
         void *_view = r->widget()->getView();
diff --git a/WebCore/khtml/rendering/render_applet.cpp b/WebCore/khtml/rendering/render_applet.cpp
index e53f4d4..c54bf9d 100644
--- a/WebCore/khtml/rendering/render_applet.cpp
+++ b/WebCore/khtml/rendering/render_applet.cpp
@@ -55,17 +55,31 @@ RenderApplet::RenderApplet(HTMLElementImpl *applet, const QMap<QString, QString>
         context = part->createJavaContext();
     }
 
+#if APPLE_CHANGES
+    m_context = context;
+    m_args = args;
+#else
     if ( context ) {
         //kdDebug(6100) << "RenderApplet::RenderApplet, setting QWidget" << endl;
         setQWidget( new KJavaAppletWidget(context, _view->viewport()) );
         processArguments(args);
     }
+#endif
 }
 
 RenderApplet::~RenderApplet()
 {
 }
 
+void RenderApplet::setStyle(RenderStyle *_style)
+{   
+    RenderWidget::setStyle(_style);
+    // FIXME?  What about percent and variable widths/heights?
+    // FIXME?  What about padding and margins?
+    QSize size = QSize(style()->width().value, style()->height().value);        
+    setQWidget(new KJavaAppletWidget(size, m_context, m_args));
+}
+
 short RenderApplet::intrinsicWidth() const
 {
     int rval = 150;
@@ -98,6 +112,11 @@ void RenderApplet::layout()
 
     KJavaAppletWidget *tmp = static_cast<KJavaAppletWidget*>(m_widget);
     if ( tmp ) {
+#if APPLE_CHANGES
+        m_widget->setFrameGeometry(QRect(xPos(), yPos(),
+                                   m_width-marginLeft()-marginRight()-paddingLeft()-paddingRight(),
+                                   m_height-marginTop()-marginBottom()-paddingTop()-paddingBottom()));
+#else 
         NodeImpl *child = element()->firstChild();
 
         while(child) {
@@ -112,20 +131,13 @@ void RenderApplet::layout()
         //kdDebug(6100) << "setting applet widget to size: " << m_width << ", " << m_height << endl;
         m_widget->resize(m_width-marginLeft()-marginRight()-paddingLeft()-paddingRight(),
                          m_height-marginTop()-marginBottom()-paddingTop()-paddingBottom());
-#if APPLE_CHANGES
-        // showApplet creates the java view if it hasn't already been created.
-        // When doing this, it replaces the widget's view with the newly created java view.
-        // Since this replacement doesn't actually occur until the widget gets its first paint,
-        // showApplet adds itself to the main view so that applets start even when not visible.
-        // We have to do this move so the widget knows where to place itself when adding itself.
-        m_widget->move(xPos(), yPos());
-#endif
         tmp->showApplet();
+#endif
     }
-
     setNeedsLayout(false);
 }
 
+#if !APPLE_CHANGES
 void RenderApplet::processArguments(const QMap<QString, QString> &args)
 {
     KJavaAppletWidget *w = static_cast<KJavaAppletWidget*>(m_widget);
@@ -150,6 +162,7 @@ void RenderApplet::processArguments(const QMap<QString, QString> &args)
             applet->setArchives( args[QString::fromLatin1("archive") ] );
     }
 }
+#endif
 
 RenderEmptyApplet::RenderEmptyApplet(DOM::NodeImpl* node)
   : RenderWidget(node)
diff --git a/WebCore/khtml/rendering/render_applet.h b/WebCore/khtml/rendering/render_applet.h
index 63863cd..e3f8fce 100644
--- a/WebCore/khtml/rendering/render_applet.h
+++ b/WebCore/khtml/rendering/render_applet.h
@@ -41,7 +41,9 @@ class RenderApplet : public RenderWidget
 public:
     RenderApplet(DOM::HTMLElementImpl* node, const QMap<QString, QString> &args);
     virtual ~RenderApplet();
-
+#if APPLE_CHANGES
+    virtual void setStyle(RenderStyle *style);
+#endif
     virtual const char *renderName() const { return "RenderApplet"; }
 
     virtual void layout();
@@ -53,7 +55,12 @@ public:
     { return static_cast<DOM::HTMLElementImpl*>(RenderObject::element()); }
 
 private:
+#if APPLE_CHANGES
+    KJavaAppletContext *m_context;
+    QMap<QString, QString> m_args;
+#else
     void processArguments( const QMap<QString, QString> &args );
+#endif
 };
 
 class RenderEmptyApplet : public RenderWidget
diff --git a/WebCore/kwq/KWQKJavaAppletWidget.h b/WebCore/kwq/KWQKJavaAppletWidget.h
index dbd6a1d..bf5dc26 100644
--- a/WebCore/kwq/KWQKJavaAppletWidget.h
+++ b/WebCore/kwq/KWQKJavaAppletWidget.h
@@ -23,59 +23,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include "KWQMap.h"
 #include "KWQWidget.h"
 #include "KWQString.h"
 
 class KJavaAppletContext;
-class KJavaAppletWidget;
-
-#ifdef __OBJC__
- at class NSMutableDictionary;
-#else
-class NSMutableDictionary;
-#endif
-
-class KJavaApplet
-{
-public:
-    KJavaApplet(KJavaAppletWidget &widget) : m_widget(widget) { }
-
-    void setAppletClass(const QString &);
-    void setAppletName(const QString &);
-    void setArchives(const QString &);
-    void setBaseURL(const QString &);
-    void setCodeBase(const QString &);
-    
-    void setParameter(const QString &, const QString &);
-
-private:
-    KJavaAppletWidget &m_widget;
-};
 
 class KJavaAppletWidget : public QWidget
 {
 public:
-    KJavaAppletWidget(KJavaAppletContext *, QWidget *);
-    ~KJavaAppletWidget();
-    
-    KJavaApplet *applet() { return &_applet; }
-    
-    void setBaseURL(const QString &baseURL) { _baseURL = baseURL; }
-    void setParameter(const QString &, const QString &);
-
-    void showApplet();
-    void showApplet(int width, int height);
-
-private:
-    KJavaApplet _applet;
-    KJavaAppletContext *_context;
-    QString _baseURL;
-    NSMutableDictionary *_parameters;
+    KJavaAppletWidget(const QSize &size, KJavaAppletContext *c, const QMap<QString, QString> &args);
 };
-
-inline void KJavaApplet::setAppletClass(const QString &s) { m_widget.setParameter("code", s); }
-inline void KJavaApplet::setAppletName(const QString &s) { m_widget.setParameter("name", s); }
-inline void KJavaApplet::setArchives(const QString &s) { m_widget.setParameter("archive", s); }
-inline void KJavaApplet::setBaseURL(const QString &URL) { m_widget.setBaseURL(URL); }
-inline void KJavaApplet::setCodeBase(const QString &s) { m_widget.setParameter("codebase", s); }
-inline void KJavaApplet::setParameter(const QString &name, const QString &value) { m_widget.setParameter(name, value); }
diff --git a/WebCore/kwq/KWQKJavaAppletWidget.mm b/WebCore/kwq/KWQKJavaAppletWidget.mm
index fb61f93..99129fb 100644
--- a/WebCore/kwq/KWQKJavaAppletWidget.mm
+++ b/WebCore/kwq/KWQKJavaAppletWidget.mm
@@ -33,46 +33,31 @@
 #import "KWQView.h"
 #import "WebCoreBridge.h"
 
-// No need to block exceptions for the NSDictionary / NSString calls
-
-KJavaAppletWidget::KJavaAppletWidget(KJavaAppletContext *c, QWidget *)
-    : _applet(*this)
-    , _context(c)
-    , _parameters([[NSMutableDictionary alloc] init])
-{
-}
-
-KJavaAppletWidget::~KJavaAppletWidget()
-{
-    [_parameters release];
-}
-
-void KJavaAppletWidget::setParameter(const QString &name, const QString &value)
+KJavaAppletWidget::KJavaAppletWidget(const QSize &size, KJavaAppletContext *c, const QMap<QString, QString> &args)
 {
-    // When putting strings into dictionaries, we should use an immutable copy.
-    // That's not necessary for keys, because they are copied.
-    NSString *immutableString = [value.getNSString() copy];
-    [_parameters setObject:immutableString forKey:name.lower().getNSString()];
-    [immutableString release];
-}
-
-void KJavaAppletWidget::showApplet()
-{
-    showApplet (width(), height());
-}
-
-void KJavaAppletWidget::showApplet(int w, int h)
-{
-    // If the view is a KWQView, we haven't replaced it with the Java view yet.
-    // Only set the Java view once.
     KWQ_BLOCK_EXCEPTIONS;
-    if ([getView() isKindOfClass:[KWQView class]]) {
-        setView([KWQ(_context->part())->bridge()
-            viewForJavaAppletWithFrame:NSMakeRect(x(), y(), w, h)
-                            attributes:_parameters
-                               baseURL:KURL(_baseURL).getNSURL()]);
-        // Add the view to the main view now so the applet starts immediately rather than until the first paint.
-        _context->part()->view()->addChild(this, x(), y());
+    
+    NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];
+    QMapConstIterator<QString, QString> it = args.begin();
+    QMapConstIterator<QString, QString> end = args.end();
+    QString baseURLString = NULL;
+    while (it != end) {
+        if (it.key().lower() == "baseurl") {
+            baseURLString = it.data();
+        }
+        [attributes setObject:it.data().getNSString() forKey:it.key().getNSString()];
+        ++it;
     }
+    
+    KHTMLPart *part = c->part();
+    KURL baseURL = baseURLString != NULL ? KURL(baseURLString) : part->baseURL();
+    
+    setView([KWQ(part)->bridge() viewForJavaAppletWithFrame:NSMakeRect(x(), y(), size.width(), size.height())
+                                                 attributes:attributes
+                                                    baseURL:baseURL.getNSURL()]);
+    [attributes release];
+    part->view()->addChild(this, x(), y());
+    
     KWQ_UNBLOCK_EXCEPTIONS;
 }
+

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list