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

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:39:34 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit d520973a3e6a9f61cc632ccf64c2832ed04e8874
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Sep 17 23:38:53 2002 +0000

            * khtml/khtmlview.cpp:
            (KHTMLView::viewportMouseTripleClickEvent):
            Added implementation.  Same as viewportMouseReleaseEvent
            except dispatches additional MouseTripleClickEvent event.
    
            (KHTMLView::viewportMouseDoubleClickEvent):
            Send extra release event.  This emulates Qt
            behavior.
    
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge mouseUp:]):
            Don't send extra release event here, instead send
            it in viewportMouseDoubleClickEvent and also in
            viewportMouseTripleClickEvent so DOM doesn't get
            confused.
    
            * kwq/KWQColor.mm:
            (QColor::hsv):
            Fixed marklar divide by 0 problemn.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2078 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index b8e6ea1..a08cb4b 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,26 @@
+2002-09-17  Richard Williamson   <rjw at apple.com>
+
+        * khtml/khtmlview.cpp:
+        (KHTMLView::viewportMouseTripleClickEvent):
+        Added implementation.  Same as viewportMouseReleaseEvent
+        except dispatches additional MouseTripleClickEvent event.
+        
+        (KHTMLView::viewportMouseDoubleClickEvent):
+        Send extra release event.  This emulates Qt
+        behavior.
+
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge mouseUp:]):
+        Don't send extra release event here, instead send
+        it in viewportMouseDoubleClickEvent and also in
+        viewportMouseTripleClickEvent so DOM doesn't get
+        confused.
+        
+        * kwq/KWQColor.mm:
+        (QColor::hsv):
+        Fixed marklar divide by 0 problemn.
+        
+        
 2002-09-17  Darin Adler  <darin at apple.com>
 
 	- fixed 2936933 -- Pages that claim to be UTF-8 but contain invalid
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index b8e6ea1..a08cb4b 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,26 @@
+2002-09-17  Richard Williamson   <rjw at apple.com>
+
+        * khtml/khtmlview.cpp:
+        (KHTMLView::viewportMouseTripleClickEvent):
+        Added implementation.  Same as viewportMouseReleaseEvent
+        except dispatches additional MouseTripleClickEvent event.
+        
+        (KHTMLView::viewportMouseDoubleClickEvent):
+        Send extra release event.  This emulates Qt
+        behavior.
+
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge mouseUp:]):
+        Don't send extra release event here, instead send
+        it in viewportMouseDoubleClickEvent and also in
+        viewportMouseTripleClickEvent so DOM doesn't get
+        confused.
+        
+        * kwq/KWQColor.mm:
+        (QColor::hsv):
+        Fixed marklar divide by 0 problemn.
+        
+        
 2002-09-17  Darin Adler  <darin at apple.com>
 
 	- fixed 2936933 -- Pages that claim to be UTF-8 but contain invalid
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index b8e6ea1..a08cb4b 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,26 @@
+2002-09-17  Richard Williamson   <rjw at apple.com>
+
+        * khtml/khtmlview.cpp:
+        (KHTMLView::viewportMouseTripleClickEvent):
+        Added implementation.  Same as viewportMouseReleaseEvent
+        except dispatches additional MouseTripleClickEvent event.
+        
+        (KHTMLView::viewportMouseDoubleClickEvent):
+        Send extra release event.  This emulates Qt
+        behavior.
+
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge mouseUp:]):
+        Don't send extra release event here, instead send
+        it in viewportMouseDoubleClickEvent and also in
+        viewportMouseTripleClickEvent so DOM doesn't get
+        confused.
+        
+        * kwq/KWQColor.mm:
+        (QColor::hsv):
+        Fixed marklar divide by 0 problemn.
+        
+        
 2002-09-17  Darin Adler  <darin at apple.com>
 
 	- fixed 2936933 -- Pages that claim to be UTF-8 but contain invalid
diff --git a/WebCore/khtml/khtmlview.cpp b/WebCore/khtml/khtmlview.cpp
index d77870b..c43a9c8 100644
--- a/WebCore/khtml/khtmlview.cpp
+++ b/WebCore/khtml/khtmlview.cpp
@@ -471,9 +471,39 @@ void KHTMLView::viewportMousePressEvent( QMouseEvent *_mouse )
     }
 }
 
+#ifdef APPLE_CHANGES
 void KHTMLView::viewportMouseTripleClickEvent( QMouseEvent *_mouse )
 {
+    if ( !m_part->xmlDocImpl() ) return;
+
+    int xm, ym;
+    viewportToContents(_mouse->x(), _mouse->y(), xm, ym);
+
+    //kdDebug( 6000 ) << "\nmouseReleaseEvent: x=" << xm << ", y=" << ym << endl;
+
+    DOM::NodeImpl::MouseEvent mev( _mouse->stateAfter(), DOM::NodeImpl::MouseRelease );
+    m_part->xmlDocImpl()->prepareMouseEvent( false, xm, ym, &mev );
+
+    bool swallowEvent = dispatchMouseEvent(EventImpl::MOUSEUP_EVENT,mev.innerNode.handle(),true,
+                                           d->clickCount,_mouse,false,DOM::NodeImpl::MouseRelease);
+
+    if (d->clickCount > 0 &&
+        QPoint(d->clickX-xm,d->clickY-ym).manhattanLength() <= QApplication::startDragDistance())
+	dispatchMouseEvent(EventImpl::CLICK_EVENT,mev.innerNode.handle(),true,
+			   d->clickCount,_mouse,true,DOM::NodeImpl::MouseRelease);
+
+    if (mev.innerNode.handle())
+	mev.innerNode.handle()->setPressed(false);
+
+    if (!swallowEvent) {
+	khtml::MouseReleaseEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode );
+	QApplication::sendEvent( m_part, &event );
+
+	khtml::MouseTripleClickEvent event2( _mouse, xm, ym, mev.url, mev.target, mev.innerNode );
+	QApplication::sendEvent( m_part, &event2 );
+    }
 }
+#endif    
 
 void KHTMLView::viewportMouseDoubleClickEvent( QMouseEvent *_mouse )
 {
@@ -500,9 +530,13 @@ void KHTMLView::viewportMouseDoubleClickEvent( QMouseEvent *_mouse )
     if (mev.innerNode.handle())
 	mev.innerNode.handle()->setPressed(false);
 
+    // Qt delivers a release event AND a double click event.
     if (!swallowEvent) {
-	khtml::MouseDoubleClickEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode );
-	QApplication::sendEvent( m_part, &event );
+	khtml::MouseReleaseEvent event1( _mouse, xm, ym, mev.url, mev.target, mev.innerNode );
+	QApplication::sendEvent( m_part, &event1 );
+
+	khtml::MouseDoubleClickEvent event2( _mouse, xm, ym, mev.url, mev.target, mev.innerNode );
+	QApplication::sendEvent( m_part, &event2 );
     }
 
 #else
diff --git a/WebCore/kwq/KWQColor.mm b/WebCore/kwq/KWQColor.mm
index b655d1e..4d11f40 100644
--- a/WebCore/kwq/KWQColor.mm
+++ b/WebCore/kwq/KWQColor.mm
@@ -349,7 +349,10 @@ void QColor::hsv(int *h, int *s, int *v) const
         f = (r == x) ? g - b : ((g == x) ? b - r : r - g); 
         i = (r == x) ? 3 : ((g == x) ? 5 : 1); 
         *h = i - f /(w - x);
-        *s = (w - x)/w;
+        if (w != 0)
+            *s = (w - x)/w;
+        else
+            *s = 0;
         *v = w; 
     }
 }
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 9fffebd..403b748 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -368,14 +368,23 @@ using khtml::RenderPart;
     if (part->impl->view()) {
         int clickCount = [event clickCount];
 
-        // Qt documentation says you always get a release event before a double-click event.
-        QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(p), button, state, clickCount);
-        part->impl->view()->viewportMouseReleaseEvent(&releaseEvent);
-        
+        // Our behavior here is a little different that Qt.  Qt always sends
+        // a mouse release event, even for a double click.  To correct problems
+        // in khtml's DOM click event handling we do not send a release here
+        // for a double click.  Instead we send that event from khtmlview's
+        // viewportMouseDoubleClickEvent.
         if (clickCount > 0 && clickCount % 2 == 0) {
             QMouseEvent doubleClickEvent(QEvent::MouseButtonDblClick, QPoint(p), button, state, clickCount);
             part->impl->view()->viewportMouseDoubleClickEvent(&doubleClickEvent);
         }
+        else if (clickCount > 0 && clickCount % 3 == 0) {
+            QMouseEvent doubleClickEvent(QEvent::MouseButtonDblClick, QPoint(p), button, state, clickCount);
+            part->impl->view()->viewportMouseTripleClickEvent(&doubleClickEvent);
+        }
+        else {
+            QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPoint(p), button, state, clickCount);
+            part->impl->view()->viewportMouseReleaseEvent(&releaseEvent);
+        }
     }
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list