[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