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

mjs mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:14:52 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 1fbd4d9f907f94961ab19935a12b1bb5463707cb
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Dec 14 02:42:45 2002 +0000

            Reviewed by Don.
    
            * khtml/dom/dom2_events.cpp:
            (UIEvent::layerX): Added to support nonstandard Mozilla
    	event.layerX property.
    	(UIEvent::layerY): Added to support nonstandard Mozilla
    	event.layerY property.
            * khtml/dom/dom2_events.h:
            * khtml/ecma/kjs_events.cpp:
            (DOMUIEvent::getValueProperty): Implemented layerX and layerY
            * khtml/ecma/kjs_events.h:
            * khtml/ecma/kjs_events.lut.h:
            * khtml/xml/dom2_eventsimpl.cpp:
            (MouseEventImpl::MouseEventImpl): Added call to computeLayerPos.
            (MouseEventImpl::computeLayerPos): Compute layer position.
            (MouseEventImpl::layerX): Added.
            (MouseEventImpl::layerY): Added.
            (MouseEventImpl::initMouseEvent): Added call to computeLayerPos.
            * khtml/xml/dom2_eventsimpl.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3048 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index dde203d..21891b2 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,25 @@
+2002-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Don.
+
+        * khtml/dom/dom2_events.cpp:
+        (UIEvent::layerX): Added to support nonstandard Mozilla
+	event.layerX property.
+	(UIEvent::layerY): Added to support nonstandard Mozilla
+	event.layerY property.
+        * khtml/dom/dom2_events.h:
+        * khtml/ecma/kjs_events.cpp:
+        (DOMUIEvent::getValueProperty): Implemented layerX and layerY
+        * khtml/ecma/kjs_events.h:
+        * khtml/ecma/kjs_events.lut.h:
+        * khtml/xml/dom2_eventsimpl.cpp:
+        (MouseEventImpl::MouseEventImpl): Added call to computeLayerPos.
+        (MouseEventImpl::computeLayerPos): Compute layer position.
+        (MouseEventImpl::layerX): Added.
+        (MouseEventImpl::layerY): Added.
+        (MouseEventImpl::initMouseEvent): Added call to computeLayerPos.
+        * khtml/xml/dom2_eventsimpl.h:
+
 2002-12-13  David Hyatt  <hyatt at apple.com>
 
 	Fix for 314799, image at wired.com doesn't show up.  Block
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index dde203d..21891b2 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,25 @@
+2002-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+        Reviewed by Don.
+
+        * khtml/dom/dom2_events.cpp:
+        (UIEvent::layerX): Added to support nonstandard Mozilla
+	event.layerX property.
+	(UIEvent::layerY): Added to support nonstandard Mozilla
+	event.layerY property.
+        * khtml/dom/dom2_events.h:
+        * khtml/ecma/kjs_events.cpp:
+        (DOMUIEvent::getValueProperty): Implemented layerX and layerY
+        * khtml/ecma/kjs_events.h:
+        * khtml/ecma/kjs_events.lut.h:
+        * khtml/xml/dom2_eventsimpl.cpp:
+        (MouseEventImpl::MouseEventImpl): Added call to computeLayerPos.
+        (MouseEventImpl::computeLayerPos): Compute layer position.
+        (MouseEventImpl::layerX): Added.
+        (MouseEventImpl::layerY): Added.
+        (MouseEventImpl::initMouseEvent): Added call to computeLayerPos.
+        * khtml/xml/dom2_eventsimpl.h:
+
 2002-12-13  David Hyatt  <hyatt at apple.com>
 
 	Fix for 314799, image at wired.com doesn't show up.  Block
diff --git a/WebCore/khtml/dom/dom2_events.cpp b/WebCore/khtml/dom/dom2_events.cpp
index ef6b5f7..ad93d86 100644
--- a/WebCore/khtml/dom/dom2_events.cpp
+++ b/WebCore/khtml/dom/dom2_events.cpp
@@ -279,7 +279,6 @@ int UIEvent::pageX() const
         return 0;
 }
 
-
 int UIEvent::pageY() const
 {
     if (!impl)
@@ -292,7 +291,29 @@ int UIEvent::pageY() const
         return 0;
 }
 
+int UIEvent::layerX() const
+{
+    if (!impl)
+	throw DOMException(DOMException::INVALID_STATE_ERR);
+    
+    MouseEventImpl *mouseEvent = dynamic_cast<MouseEventImpl*>(impl);
+    if (mouseEvent)
+        return mouseEvent->layerX();
+    else
+        return 0;
+}
 
+int UIEvent::layerY() const
+{
+    if (!impl)
+	throw DOMException(DOMException::INVALID_STATE_ERR);
+    
+    MouseEventImpl *mouseEvent = dynamic_cast<MouseEventImpl*>(impl);
+    if (mouseEvent)
+        return  mouseEvent->layerY();
+    else
+        return 0;
+}
 
 void UIEvent::initUIEvent(const DOMString &typeArg,
                                  bool canBubbleArg,
diff --git a/WebCore/khtml/dom/dom2_events.h b/WebCore/khtml/dom/dom2_events.h
index c535b23..1687666 100644
--- a/WebCore/khtml/dom/dom2_events.h
+++ b/WebCore/khtml/dom/dom2_events.h
@@ -328,13 +328,20 @@ public:
     int keyCode() const;
 
     /**
-     * Non-standard extensions to support Netscape-style pageX and pageY event property.
+     * Non-standard extensions to support Netscape-style pageX and pageY event properties.
      *
      */
     int pageX() const;
     int pageY() const;
 
     /**
+     * Non-standard extensions to support Netscape-style layerX and layerY event properties.
+     *
+     */
+    int layerX() const;
+    int layerY() const;
+
+    /**
      * The initUIEvent method is used to initialize the value of a UIEvent
      * created through the DocumentEvent interface. This method may only be
      * called before the UIEvent has been dispatched via the dispatchEvent
diff --git a/WebCore/khtml/ecma/kjs_events.cpp b/WebCore/khtml/ecma/kjs_events.cpp
index 0f245fe..9d459bf 100644
--- a/WebCore/khtml/ecma/kjs_events.cpp
+++ b/WebCore/khtml/ecma/kjs_events.cpp
@@ -343,6 +343,8 @@ const ClassInfo DOMUIEvent::info = { "UIEvent", &DOMEvent::info, &DOMUIEventTabl
   view		DOMUIEvent::View	DontDelete|ReadOnly
   detail	DOMUIEvent::Detail	DontDelete|ReadOnly
   keyCode	DOMUIEvent::KeyCode	DontDelete|ReadOnly
+  layerX	DOMUIEvent::LayerX	DontDelete|ReadOnly
+  layerY	DOMUIEvent::LayerY	DontDelete|ReadOnly
   pageX		DOMUIEvent::PageX	DontDelete|ReadOnly
   pageY		DOMUIEvent::PageY	DontDelete|ReadOnly
 @end
@@ -372,6 +374,10 @@ Value DOMUIEvent::getValueProperty(ExecState *exec, int token) const
     return Number(static_cast<DOM::UIEvent>(event).detail());
   case KeyCode:
     return Number(static_cast<DOM::UIEvent>(event).keyCode());
+  case LayerX:
+    return Number(static_cast<DOM::UIEvent>(event).layerX());
+  case LayerY:
+    return Number(static_cast<DOM::UIEvent>(event).layerY());
   case PageX:
     return Number(static_cast<DOM::UIEvent>(event).pageX());
   case PageY:
diff --git a/WebCore/khtml/ecma/kjs_events.h b/WebCore/khtml/ecma/kjs_events.h
index c4e309b..9149d85 100644
--- a/WebCore/khtml/ecma/kjs_events.h
+++ b/WebCore/khtml/ecma/kjs_events.h
@@ -107,7 +107,7 @@ namespace KJS {
     // no put - all read-only
     virtual const ClassInfo* classInfo() const { return &info; }
     static const ClassInfo info;
-    enum { View, Detail, KeyCode, PageX, PageY, InitUIEvent };
+    enum { View, Detail, KeyCode, LayerX, LayerY, PageX, PageY, InitUIEvent };
     DOM::UIEvent toUIEvent() const { return static_cast<DOM::UIEvent>(event); }
   };
 
diff --git a/WebCore/khtml/ecma/kjs_events.lut.h b/WebCore/khtml/ecma/kjs_events.lut.h
index 7452dc5..8fc9997 100644
--- a/WebCore/khtml/ecma/kjs_events.lut.h
+++ b/WebCore/khtml/ecma/kjs_events.lut.h
@@ -76,11 +76,11 @@ const struct HashTable EventExceptionConstructorTable = { 2, 1, EventExceptionCo
 namespace KJS {
 
 const struct HashEntry DOMUIEventTableEntries[] = {
-   { 0, 0, 0, 0, 0 },
+   { "layerY", DOMUIEvent::LayerY, DontDelete|ReadOnly, 0, 0 },
    { "pageX", DOMUIEvent::PageX, DontDelete|ReadOnly, 0, 0 },
    { "detail", DOMUIEvent::Detail, DontDelete|ReadOnly, 0, &DOMUIEventTableEntries[6] },
    { "view", DOMUIEvent::View, DontDelete|ReadOnly, 0, &DOMUIEventTableEntries[5] },
-   { 0, 0, 0, 0, 0 },
+   { "layerX", DOMUIEvent::LayerX, DontDelete|ReadOnly, 0, 0 },
    { "keyCode", DOMUIEvent::KeyCode, DontDelete|ReadOnly, 0, 0 },
    { "pageY", DOMUIEvent::PageY, DontDelete|ReadOnly, 0, 0 }
 };
diff --git a/WebCore/khtml/xml/dom2_eventsimpl.cpp b/WebCore/khtml/xml/dom2_eventsimpl.cpp
index 96b61f1..e5a469f 100644
--- a/WebCore/khtml/xml/dom2_eventsimpl.cpp
+++ b/WebCore/khtml/xml/dom2_eventsimpl.cpp
@@ -25,6 +25,9 @@
 #include "xml/dom2_eventsimpl.h"
 #include "xml/dom_stringimpl.h"
 #include "xml/dom_nodeimpl.h"
+#include "xml/dom_docimpl.h"
+#include "rendering/render_object.h"
+#include "rendering/render_layer.h"
 
 #include <kdebug.h>
 
@@ -405,6 +408,35 @@ MouseEventImpl::MouseEventImpl(EventId _id,
     m_relatedTarget = relatedTargetArg;
     if (m_relatedTarget)
 	m_relatedTarget->ref();
+    computeLayerPos();
+}
+
+void MouseEventImpl::computeLayerPos()
+{
+    m_layerX = m_clientX;
+    m_layerY = m_clientY;
+
+    DocumentImpl *doc = view()->document();
+
+    if (!doc) {
+	return;
+    }
+
+    khtml::RenderObject::NodeInfo renderInfo(true, false);
+    doc->renderer()->layer()->nodeAtPoint(renderInfo, m_clientX, m_clientY);
+
+    NodeImpl *node = renderInfo.innerNonSharedNode();
+    while (node && !node->renderer()) {
+	node = node->parent();
+    }
+
+    if (!node) {
+	return;
+    }
+
+    node->renderer()->enclosingLayer()->updateLayerPosition();
+    m_layerX -= node->renderer()->enclosingLayer()->xPos();
+    m_layerY -= node->renderer()->enclosingLayer()->yPos();
 }
 
 MouseEventImpl::~MouseEventImpl()
@@ -433,6 +465,16 @@ long MouseEventImpl::clientY() const
     return m_clientY;
 }
 
+long MouseEventImpl::layerX() const
+{
+    return m_layerX;
+}
+
+long MouseEventImpl::layerY() const
+{
+    return m_layerY;
+}
+
 bool MouseEventImpl::ctrlKey() const
 {
     return m_ctrlKey;
@@ -496,6 +538,7 @@ void MouseEventImpl::initMouseEvent(const DOMString &typeArg,
     m_relatedTarget = relatedTargetArg.handle();
     if (m_relatedTarget)
 	m_relatedTarget->ref();
+    computeLayerPos();
 }
 
 //---------------------------------------------------------------------------------------------
diff --git a/WebCore/khtml/xml/dom2_eventsimpl.h b/WebCore/khtml/xml/dom2_eventsimpl.h
index a1585d3..3b30413 100644
--- a/WebCore/khtml/xml/dom2_eventsimpl.h
+++ b/WebCore/khtml/xml/dom2_eventsimpl.h
@@ -192,6 +192,8 @@ public:
     long screenY() const;
     long clientX() const;
     long clientY() const;
+    long layerX() const;
+    long layerY() const;
     bool ctrlKey() const;
     bool shiftKey() const;
     bool altKey() const;
@@ -220,12 +222,16 @@ protected:
     long m_screenY;
     long m_clientX;
     long m_clientY;
+    long m_layerX;
+    long m_layerY;
     bool m_ctrlKey;
     bool m_altKey;
     bool m_shiftKey;
     bool m_metaKey;
     unsigned short m_button;
     NodeImpl *m_relatedTarget;
+ private:
+    void computeLayerPos();
 };
 
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list