Index: webkit/api/src/WebPopupMenuImpl.cpp |
diff --git a/webkit/api/src/WebPopupMenuImpl.cpp b/webkit/api/src/WebPopupMenuImpl.cpp |
deleted file mode 100644 |
index f6d360e425013898ccad0c82caca93e301c6d1c8..0000000000000000000000000000000000000000 |
--- a/webkit/api/src/WebPopupMenuImpl.cpp |
+++ /dev/null |
@@ -1,312 +0,0 @@ |
-/* |
- * Copyright (C) 2009 Google Inc. All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions are |
- * met: |
- * |
- * * Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * * Redistributions in binary form must reproduce the above |
- * copyright notice, this list of conditions and the following disclaimer |
- * in the documentation and/or other materials provided with the |
- * distribution. |
- * * Neither the name of Google Inc. nor the names of its |
- * contributors may be used to endorse or promote products derived from |
- * this software without specific prior written permission. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-#include "config.h" |
-#include "WebPopupMenuImpl.h" |
- |
-#include "Cursor.h" |
-#include "FramelessScrollView.h" |
-#include "FrameView.h" |
-#include "IntRect.h" |
-#include "PlatformContextSkia.h" |
-#include "PlatformKeyboardEvent.h" |
-#include "PlatformMouseEvent.h" |
-#include "PlatformWheelEvent.h" |
-#include "SkiaUtils.h" |
- |
-#include "WebInputEvent.h" |
-#include "WebInputEventConversion.h" |
-#include "WebRect.h" |
-#include "WebWidgetClient.h" |
- |
-#include <skia/ext/platform_canvas.h> |
- |
-using namespace WebCore; |
- |
-namespace WebKit { |
- |
-// WebPopupMenu --------------------------------------------------------------- |
- |
-WebPopupMenu* WebPopupMenu::create(WebWidgetClient* client) |
-{ |
- return new WebPopupMenuImpl(client); |
-} |
- |
-// WebWidget ------------------------------------------------------------------ |
- |
-WebPopupMenuImpl::WebPopupMenuImpl(WebWidgetClient* client) |
- : m_client(client) |
- , m_widget(0) |
-{ |
- // set to impossible point so we always get the first mouse pos |
- m_lastMousePosition = WebPoint(-1, -1); |
-} |
- |
-WebPopupMenuImpl::~WebPopupMenuImpl() |
-{ |
- if (m_widget) |
- m_widget->setClient(0); |
-} |
- |
-void WebPopupMenuImpl::Init(FramelessScrollView* widget, const WebRect& bounds) |
-{ |
- m_widget = widget; |
- m_widget->setClient(this); |
- |
- if (m_client) { |
- m_client->setWindowRect(bounds); |
- m_client->show(WebNavigationPolicy()); // Policy is ignored |
- } |
-} |
- |
-void WebPopupMenuImpl::MouseMove(const WebMouseEvent& event) |
-{ |
- // don't send mouse move messages if the mouse hasn't moved. |
- if (event.x != m_lastMousePosition.x || event.y != m_lastMousePosition.y) { |
- m_lastMousePosition = WebPoint(event.x, event.y); |
- m_widget->handleMouseMoveEvent(PlatformMouseEventBuilder(m_widget, event)); |
- } |
-} |
- |
-void WebPopupMenuImpl::MouseLeave(const WebMouseEvent& event) |
-{ |
- m_widget->handleMouseMoveEvent(PlatformMouseEventBuilder(m_widget, event)); |
-} |
- |
-void WebPopupMenuImpl::MouseDown(const WebMouseEvent& event) |
-{ |
- m_widget->handleMouseDownEvent(PlatformMouseEventBuilder(m_widget, event)); |
-} |
- |
-void WebPopupMenuImpl::MouseUp(const WebMouseEvent& event) |
-{ |
- mouseCaptureLost(); |
- m_widget->handleMouseReleaseEvent(PlatformMouseEventBuilder(m_widget, event)); |
-} |
- |
-void WebPopupMenuImpl::MouseWheel(const WebMouseWheelEvent& event) |
-{ |
- m_widget->handleWheelEvent(PlatformWheelEventBuilder(m_widget, event)); |
-} |
- |
-bool WebPopupMenuImpl::KeyEvent(const WebKeyboardEvent& event) |
-{ |
- return m_widget->handleKeyEvent(PlatformKeyboardEventBuilder(event)); |
-} |
- |
-// WebWidget ------------------------------------------------------------------- |
- |
-void WebPopupMenuImpl::close() |
-{ |
- if (m_widget) |
- m_widget->hide(); |
- |
- m_client = 0; |
- |
- deref(); // Balances ref() from WebWidget::Create |
-} |
- |
-void WebPopupMenuImpl::resize(const WebSize& newSize) |
-{ |
- if (m_size == newSize) |
- return; |
- m_size = newSize; |
- |
- if (m_widget) { |
- IntRect newGeometry(0, 0, m_size.width, m_size.height); |
- m_widget->setFrameRect(newGeometry); |
- } |
- |
- if (m_client) { |
- WebRect damagedRect(0, 0, m_size.width, m_size.height); |
- m_client->didInvalidateRect(damagedRect); |
- } |
-} |
- |
-void WebPopupMenuImpl::layout() |
-{ |
-} |
- |
-void WebPopupMenuImpl::paint(WebCanvas* canvas, const WebRect& rect) |
-{ |
- if (!m_widget) |
- return; |
- |
- if (!rect.isEmpty()) { |
-#if WEBKIT_USING_CG |
- GraphicsContext gc(canvas); |
-#elif WEBKIT_USING_SKIA |
- PlatformContextSkia context(canvas); |
- // PlatformGraphicsContext is actually a pointer to PlatformContextSkia. |
- GraphicsContext gc(reinterpret_cast<PlatformGraphicsContext*>(&context)); |
-#else |
- notImplemented(); |
-#endif |
- m_widget->paint(&gc, rect); |
- } |
-} |
- |
-bool WebPopupMenuImpl::handleInputEvent(const WebInputEvent& inputEvent) |
-{ |
- if (!m_widget) |
- return false; |
- |
- // TODO (jcampan): WebKit seems to always return false on mouse events |
- // methods. For now we'll assume it has processed them (as we are only |
- // interested in whether keyboard events are processed). |
- switch (inputEvent.type) { |
- case WebInputEvent::MouseMove: |
- MouseMove(*static_cast<const WebMouseEvent*>(&inputEvent)); |
- return true; |
- |
- case WebInputEvent::MouseLeave: |
- MouseLeave(*static_cast<const WebMouseEvent*>(&inputEvent)); |
- return true; |
- |
- case WebInputEvent::MouseWheel: |
- MouseWheel(*static_cast<const WebMouseWheelEvent*>(&inputEvent)); |
- return true; |
- |
- case WebInputEvent::MouseDown: |
- MouseDown(*static_cast<const WebMouseEvent*>(&inputEvent)); |
- return true; |
- |
- case WebInputEvent::MouseUp: |
- MouseUp(*static_cast<const WebMouseEvent*>(&inputEvent)); |
- return true; |
- |
- // In Windows, RawKeyDown only has information about the physical key, but |
- // for "selection", we need the information about the character the key |
- // translated into. For English, the physical key value and the character |
- // value are the same, hence, "selection" works for English. But for other |
- // languages, such as Hebrew, the character value is different from the |
- // physical key value. Thus, without accepting Char event type which |
- // contains the key's character value, the "selection" won't work for |
- // non-English languages, such as Hebrew. |
- case WebInputEvent::RawKeyDown: |
- case WebInputEvent::KeyDown: |
- case WebInputEvent::KeyUp: |
- case WebInputEvent::Char: |
- return KeyEvent(*static_cast<const WebKeyboardEvent*>(&inputEvent)); |
- |
- default: |
- break; |
- } |
- return false; |
-} |
- |
-void WebPopupMenuImpl::mouseCaptureLost() |
-{ |
-} |
- |
-void WebPopupMenuImpl::setFocus(bool enable) |
-{ |
-} |
- |
-bool WebPopupMenuImpl::handleCompositionEvent( |
- WebCompositionCommand command, int cursorPosition, int targetStart, |
- int targetEnd, const WebString& imeString) |
-{ |
- return false; |
-} |
- |
-bool WebPopupMenuImpl::queryCompositionStatus(bool* enabled, WebRect* caretRect) |
-{ |
- return false; |
-} |
- |
-void WebPopupMenuImpl::setTextDirection(WebTextDirection direction) |
-{ |
-} |
- |
- |
-//----------------------------------------------------------------------------- |
-// WebCore::HostWindow |
- |
-void WebPopupMenuImpl::repaint(const IntRect& paintRect, |
- bool contentChanged, |
- bool immediate, |
- bool repaintContentOnly) |
-{ |
- // Ignore spurious calls. |
- if (!contentChanged || paintRect.isEmpty()) |
- return; |
- if (m_client) |
- m_client->didInvalidateRect(paintRect); |
-} |
- |
-void WebPopupMenuImpl::scroll(const IntSize& scrollDelta, |
- const IntRect& scrollRect, |
- const IntRect& clipRect) |
-{ |
- if (m_client) { |
- int dx = scrollDelta.width(); |
- int dy = scrollDelta.height(); |
- m_client->didScrollRect(dx, dy, clipRect); |
- } |
-} |
- |
-IntPoint WebPopupMenuImpl::screenToWindow(const IntPoint& point) const |
-{ |
- notImplemented(); |
- return IntPoint(); |
-} |
- |
-IntRect WebPopupMenuImpl::windowToScreen(const IntRect& rect) const |
-{ |
- notImplemented(); |
- return IntRect(); |
-} |
- |
-void WebPopupMenuImpl::scrollRectIntoView(const IntRect&, const ScrollView*) const |
-{ |
- // Nothing to be done here since we do not have the concept of a container |
- // that implements its own scrolling. |
-} |
- |
-void WebPopupMenuImpl::scrollbarsModeDidChange() const |
-{ |
- // Nothing to be done since we have no concept of different scrollbar modes. |
-} |
- |
-//----------------------------------------------------------------------------- |
-// WebCore::FramelessScrollViewClient |
- |
-void WebPopupMenuImpl::popupClosed(FramelessScrollView* widget) |
-{ |
- ASSERT(widget == m_widget); |
- if (m_widget) { |
- m_widget->setClient(0); |
- m_widget = 0; |
- } |
- m_client->closeWidgetSoon(); |
-} |
- |
-} // namespace WebKit |