15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 32f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebPopupMenuImpl.h" 33f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 341e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "core/frame/FrameView.h" 35a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/Cursor.h" 36a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/NotImplemented.h" 371e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/PlatformGestureEvent.h" 381e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/PlatformKeyboardEvent.h" 391e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/PlatformMouseEvent.h" 401e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/PlatformWheelEvent.h" 411e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/geometry/IntRect.h" 42a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/graphics/GraphicsContext.h" 43a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/graphics/skia/SkiaUtils.h" 4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/Platform.h" 4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebCompositorSupport.h" 4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebContentLayer.h" 47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebFloatRect.h" 4809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebLayerTreeView.h" 495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "public/platform/WebRect.h" 50f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebInputEvent.h" 51f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebRange.h" 52f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebViewClient.h" 53f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebWidgetClient.h" 54f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/PopupContainer.h" 55f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/PopupMenuChromium.h" 56f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "web/WebInputEventConversion.h" 5793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include <skia/ext/platform_canvas.h> 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// WebPopupMenu --------------------------------------------------------------- 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebPopupMenu* WebPopupMenu::create(WebWidgetClient* client) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Pass the WebPopupMenuImpl's self-reference to the caller. 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return adoptRef(new WebPopupMenuImpl(client)).leakRef(); 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// WebWidget ------------------------------------------------------------------ 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebPopupMenuImpl::WebPopupMenuImpl(WebWidgetClient* client) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_client(client) 7309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_layerTreeView(0) 7409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // Set to impossible point so we always get the first mouse position. 7509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_lastMousePosition(WebPoint(-1, -1)) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_widget(0) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebPopupMenuImpl::~WebPopupMenuImpl() 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_widget) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->setClient(0); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void WebPopupMenuImpl::willCloseLayerTreeView() 8709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_layerTreeView = 0; 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid WebPopupMenuImpl::initialize(PopupContainer* widget, const WebRect& bounds) 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget = widget; 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->setClient(this); 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 96f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (!m_client) 97f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return; 98f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_client->setWindowRect(bounds); 99f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_client->show(WebNavigationPolicy()); // Policy is ignored. 100f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 101f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_client->initializeLayerTreeView(); 102f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_layerTreeView = m_client->layerTreeView(); 103f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (m_layerTreeView) { 104f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_layerTreeView->setVisible(true); 105f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_layerTreeView->setDeviceScaleFactor(m_client->deviceScaleFactor()); 106f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_rootLayer = adoptPtr(Platform::current()->compositorSupport()->createContentLayer(this)); 107f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_rootLayer->layer()->setBounds(m_size); 108f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) m_layerTreeView->setRootLayer(*m_rootLayer->layer()); 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::handleMouseMove(const WebMouseEvent& event) 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't send mouse move messages if the mouse hasn't moved. 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.x != m_lastMousePosition.x || event.y != m_lastMousePosition.y) { 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_lastMousePosition = WebPoint(event.x, event.y); 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->handleMouseMoveEvent(PlatformMouseEventBuilder(m_widget, event)); 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We cannot call setToolTipText() in PopupContainer, because PopupContainer is in WebCore, and we cannot refer to WebKit from Webcore. 12009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) PopupContainer* container = static_cast<PopupContainer*>(m_widget); 121e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) client()->setToolTipText(container->getSelectedItemToolTip(), toWebTextDirection(container->menuStyle().textDirection())); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::handleMouseLeave(const WebMouseEvent& event) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->handleMouseMoveEvent(PlatformMouseEventBuilder(m_widget, event)); 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::handleMouseDown(const WebMouseEvent& event) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->handleMouseDownEvent(PlatformMouseEventBuilder(m_widget, event)); 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::handleMouseUp(const WebMouseEvent& event) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseCaptureLost(); 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->handleMouseReleaseEvent(PlatformMouseEventBuilder(m_widget, event)); 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::handleMouseWheel(const WebMouseWheelEvent& event) 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->handleWheelEvent(PlatformWheelEventBuilder(m_widget, event)); 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::handleGestureEvent(const WebGestureEvent& event) 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m_widget->handleGestureEvent(PlatformGestureEventBuilder(m_widget, event)); 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::handleTouchEvent(const WebTouchEvent& event) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PlatformTouchEventBuilder touchEventBuilder(m_widget, event); 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool defaultPrevented(m_widget->handleTouchEvent(touchEventBuilder)); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return defaultPrevented; 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::handleKeyEvent(const WebKeyboardEvent& event) 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m_widget->handleKeyEvent(PlatformKeyboardEventBuilder(event)); 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// WebWidget ------------------------------------------------------------------- 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::close() 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_widget) 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->hide(); 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_client = 0; 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deref(); // Balances ref() from WebPopupMenu::create. 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::willStartLiveResize() 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::resize(const WebSize& newSize) 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_size == newSize) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_size = newSize; 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_widget) { 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntRect newGeometry(0, 0, m_size.width, m_size.height); 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->setFrameRect(newGeometry); 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_client) { 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebRect damagedRect(0, 0, m_size.width, m_size.height); 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_client->didInvalidateRect(damagedRect); 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 19609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_rootLayer) 19709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_rootLayer->layer()->setBounds(newSize); 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::willEndLiveResize() 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 204c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)void WebPopupMenuImpl::beginFrame(const WebBeginFrameArgs&) 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::layout() 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid WebPopupMenuImpl::paintContents(WebCanvas* canvas, const WebRect& rect, bool, WebContentLayerClient::GraphicsContextStatus contextStatus) 21309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 21409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!m_widget) 21509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 21609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 21709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!rect.isEmpty()) { 218323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) GraphicsContext context(canvas, 219323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) contextStatus == WebContentLayerClient::GraphicsContextEnabled ? GraphicsContext::NothingDisabled : GraphicsContext::FullyDisabled); 22009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_widget->paint(&context, rect); 22109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 22209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 22309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 224d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)void WebPopupMenuImpl::paint(WebCanvas* canvas, const WebRect& rect) 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!m_widget) 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!rect.isEmpty()) { 23053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) GraphicsContext context(canvas); 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context.applyDeviceScaleFactor(m_client->deviceScaleFactor()); 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->paint(&context, rect); 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::themeChanged() 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) notImplemented(); 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::handleInputEvent(const WebInputEvent& inputEvent) 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!m_widget) 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // FIXME: WebKit seems to always return false on mouse events methods. For 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // now we'll assume it has processed them (as we are only interested in 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // whether keyboard events are processed). 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (inputEvent.type) { 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::MouseMove: 251197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch handleMouseMove(static_cast<const WebMouseEvent&>(inputEvent)); 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::MouseLeave: 255197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch handleMouseLeave(static_cast<const WebMouseEvent&>(inputEvent)); 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::MouseWheel: 259197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch handleMouseWheel(static_cast<const WebMouseWheelEvent&>(inputEvent)); 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::MouseDown: 263197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch handleMouseDown(static_cast<const WebMouseEvent&>(inputEvent)); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::MouseUp: 267197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch handleMouseUp(static_cast<const WebMouseEvent&>(inputEvent)); 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // In Windows, RawKeyDown only has information about the physical key, but 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // for "selection", we need the information about the character the key 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // translated into. For English, the physical key value and the character 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // value are the same, hence, "selection" works for English. But for other 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // languages, such as Hebrew, the character value is different from the 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // physical key value. Thus, without accepting Char event type which 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // contains the key's character value, the "selection" won't work for 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // non-English languages, such as Hebrew. 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::RawKeyDown: 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::KeyDown: 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::KeyUp: 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::Char: 282197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return handleKeyEvent(static_cast<const WebKeyboardEvent&>(inputEvent)); 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::TouchStart: 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::TouchMove: 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::TouchEnd: 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::TouchCancel: 288197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return handleTouchEvent(static_cast<const WebTouchEvent&>(inputEvent)); 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureScrollBegin: 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureScrollEnd: 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureScrollUpdate: 293926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case WebInputEvent::GestureScrollUpdateWithoutPropagation: 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureFlingStart: 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureFlingCancel: 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureTap: 29753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) case WebInputEvent::GestureTapUnconfirmed: 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureTapDown: 2991e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) case WebInputEvent::GestureShowPress: 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureTapCancel: 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureDoubleTap: 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureTwoFingerTap: 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureLongPress: 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GestureLongTap: 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GesturePinchBegin: 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GesturePinchEnd: 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::GesturePinchUpdate: 308197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return handleGestureEvent(static_cast<const WebGestureEvent&>(inputEvent)); 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::Undefined: 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::MouseEnter: 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case WebInputEvent::ContextMenu: 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::mouseCaptureLost() 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::setFocus(bool) 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::setComposition(const WebString&, const WebVector<WebCompositionUnderline>&, int, int) 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::confirmComposition() 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 336591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochbool WebPopupMenuImpl::confirmComposition(ConfirmCompositionBehavior) 337591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch{ 338591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 339591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch} 340591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::confirmComposition(const WebString&) 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::compositionRange(size_t* location, size_t* length) 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *location = 0; 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *length = 0; 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebPopupMenuImpl::caretOrSelectionRange(size_t* location, size_t* length) 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *location = 0; 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *length = 0; 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::setTextDirection(WebTextDirection) 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//----------------------------------------------------------------------------- 366e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// HostWindow 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)void WebPopupMenuImpl::invalidateContentsAndRootView(const IntRect& paintRect) 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (paintRect.isEmpty()) 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_client) 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_client->didInvalidateRect(paintRect); 37409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (m_rootLayer) 37509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_rootLayer->layer()->invalidateRect(FloatRect(paintRect)); 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)void WebPopupMenuImpl::invalidateContentsForSlowScroll(const IntRect& updateRect) 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 38053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) invalidateContentsAndRootView(updateRect); 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebPopupMenuImpl::scheduleAnimation() 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)IntRect WebPopupMenuImpl::rootViewToScreen(const IntRect& rect) const 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) notImplemented(); 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return IntRect(); 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebScreenInfo WebPopupMenuImpl::screenInfo() const 39453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 39553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return WebScreenInfo(); 39653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 39753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 3987242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid WebPopupMenuImpl::popupClosed(PopupContainer* widget) 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(widget == m_widget); 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_widget) { 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget->setClient(0); 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_widget = 0; 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_client) 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_client->closeWidgetSoon(); 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink 410