Changeset 74243 in webkit
- Timestamp:
- Dec 17, 2010 2:51:35 AM (13 years ago)
- Location:
- trunk/WebKit/qt
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/qt/Api/qwebpage.cpp
r73867 r74243 760 760 761 761 handleClipboard(ev, ev->button()); 762 handleSoftwareInputPanel(ev->button() );763 } 764 765 void QWebPagePrivate::handleSoftwareInputPanel(Qt::MouseButton button )762 handleSoftwareInputPanel(ev->button(), QPointF(ev->pos()).toPoint()); 763 } 764 765 void QWebPagePrivate::handleSoftwareInputPanel(Qt::MouseButton button, const QPoint& pos) 766 766 { 767 767 Frame* frame = page->focusController()->focusedFrame(); … … 775 775 client->ownerWidget()->style()->styleHint(QStyle::SH_RequestSoftwareInputPanel)); 776 776 if (!clickCausedFocus || behavior == QStyle::RSIP_OnMouseClick) { 777 QEvent event(QEvent::RequestSoftwareInputPanel); 778 QApplication::sendEvent(client->ownerWidget(), &event); 777 HitTestResult result = frame->eventHandler()->hitTestResultAtPoint(frame->view()->windowToContents(pos), false); 778 if (result.isContentEditable()) { 779 QEvent event(QEvent::RequestSoftwareInputPanel); 780 QApplication::sendEvent(client->ownerWidget(), &event); 781 } 779 782 } 780 783 } -
trunk/WebKit/qt/Api/qwebpage_p.h
r73867 r74243 126 126 void leaveEvent(QEvent*); 127 127 void handleClipboard(QEvent*, Qt::MouseButton); 128 void handleSoftwareInputPanel(Qt::MouseButton );128 void handleSoftwareInputPanel(Qt::MouseButton, const QPoint&); 129 129 bool handleScrolling(QKeyEvent*, WebCore::Frame*); 130 130 -
trunk/WebKit/qt/ChangeLog
r74235 r74243 1 2010-12-17 Yi Shen <yi.4.shen@nokia.com> 2 3 Reviewed by Kenneth Rohde Christiansen. 4 5 [Qt] QWebPage sends out a RequestSoftwareInputPanel event 6 incorrectly in particular case 7 https://bugs.webkit.org/show_bug.cgi?id=50419 8 9 Add HitTestResult check before firing RequestSoftwareInputPanel event. 10 11 * Api/qwebpage.cpp: 12 (QWebPagePrivate::mouseReleaseEvent): 13 (QWebPagePrivate::handleSoftwareInputPanel): 14 * Api/qwebpage_p.h: 15 * tests/qwebpage/tst_qwebpage.cpp: 16 (clickOnPage): 17 (tst_QWebPage::inputMethods): 18 1 19 2010-12-17 Eric Seidel <eric@webkit.org> 2 20 -
trunk/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
r74173 r74243 1393 1393 } 1394 1394 1395 static void clickOnPage(QWebPage* page, const QPoint& position) 1396 { 1397 QMouseEvent evpres(QEvent::MouseButtonPress, position, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1398 page->event(&evpres); 1399 QMouseEvent evrel(QEvent::MouseButtonRelease, position, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1400 page->event(&evrel); 1401 } 1402 1395 1403 void tst_QWebPage::inputMethods() 1396 1404 { … … 1429 1437 1430 1438 QWebElementCollection inputs = page->mainFrame()->documentElement().findAll("input"); 1431 1432 QMouseEvent evpres(QEvent::MouseButtonPress, inputs.at(0).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1433 page->event(&evpres); 1434 QMouseEvent evrel(QEvent::MouseButtonRelease, inputs.at(0).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1435 page->event(&evrel); 1439 QPoint textInputCenter = inputs.at(0).geometry().center(); 1440 1441 clickOnPage(page, textInputCenter); 1436 1442 1437 1443 // This part of the test checks if the SIP (Software Input Panel) is triggered, … … 1458 1464 viewEventSpy.clear(); 1459 1465 1460 page->event(&evpres); 1461 page->event(&evrel); 1466 clickOnPage(page, textInputCenter); 1462 1467 QVERIFY(viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); 1463 1468 … … 1561 1566 // Deselect the selection by sending MouseButtonPress events 1562 1567 // This moves the current cursor to the end of the text 1563 page->event(&evpres); 1564 page->event(&evrel); 1568 clickOnPage(page, textInputCenter); 1565 1569 1566 1570 { … … 1610 1614 //RIGHT to LEFT selection 1611 1615 //Deselect the selection (this moves the current cursor to the end of the text) 1612 page->event(&evpres); 1613 page->event(&evrel); 1616 clickOnPage(page, textInputCenter); 1614 1617 1615 1618 //ImAnchorPosition … … 1658 1661 1659 1662 //ImhHiddenText 1660 QMouseEvent evpresPassword(QEvent::MouseButtonPress, inputs.at(1).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1661 page->event(&evpresPassword); 1662 QMouseEvent evrelPassword(QEvent::MouseButtonRelease, inputs.at(1).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1663 page->event(&evrelPassword); 1663 QPoint passwordInputCenter = inputs.at(1).geometry().center(); 1664 clickOnPage(page, passwordInputCenter); 1664 1665 1665 1666 QVERIFY(inputMethodEnabled(view)); 1666 1667 QVERIFY(inputMethodHints(view) & Qt::ImhHiddenText); 1667 1668 1668 page->event(&evpres); 1669 page->event(&evrel); 1669 clickOnPage(page, textInputCenter); 1670 1670 QVERIFY(!(inputMethodHints(view) & Qt::ImhHiddenText)); 1671 1671 … … 1674 1674 1675 1675 QWebElement para = page->mainFrame()->findFirstElement("p"); 1676 { 1677 QMouseEvent evpres(QEvent::MouseButtonPress, para.geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1678 page->event(&evpres); 1679 QMouseEvent evrel(QEvent::MouseButtonRelease, para.geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); 1680 page->event(&evrel); 1681 } 1676 clickOnPage(page, para.geometry().center()); 1682 1677 1683 1678 QVERIFY(!viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); … … 2005 2000 QCOMPARE(anchorPosition, 12); 2006 2001 2002 // Check sending RequestSoftwareInputPanel event 2003 page->mainFrame()->setHtml("<html><body>" \ 2004 "<input type='text' id='input5' value='QtWebKit inputMethod'/>" \ 2005 "<div id='btnDiv' onclick='i=document.getElementById("input5"); i.focus();'>abc</div>"\ 2006 "</body></html>"); 2007 QWebElement inputElement = page->mainFrame()->findFirstElement("div"); 2008 clickOnPage(page, inputElement.geometry().center()); 2009 2010 QVERIFY(!viewEventSpy.contains(QEvent::RequestSoftwareInputPanel)); 2007 2011 delete container; 2008 2012 }
Note: See TracChangeset
for help on using the changeset viewer.