WebPopupMenuImpl.h [plain text]
#ifndef WebPopupMenuImpl_h
#define WebPopupMenuImpl_h
#include "FramelessScrollViewClient.h"
#include "WebPopupMenu.h"
#include "platform/WebPoint.h"
#include "platform/WebSize.h"
#include <wtf/OwnPtr.h>
#include <wtf/RefCounted.h>
namespace WebCore {
class Frame;
class FramelessScrollView;
class KeyboardEvent;
class Page;
#if ENABLE(GESTURE_RECOGNIZER)
class PlatformGestureRecognizer;
#endif
class PlatformKeyboardEvent;
class Range;
class Widget;
}
namespace WebKit {
class WebGestureEvent;
class WebKeyboardEvent;
class WebMouseEvent;
class WebMouseWheelEvent;
class WebRange;
struct WebRect;
class WebTouchEvent;
class WebPopupMenuImpl : public WebPopupMenu,
public WebCore::FramelessScrollViewClient,
public RefCounted<WebPopupMenuImpl> {
WTF_MAKE_FAST_ALLOCATED;
public:
virtual void close() OVERRIDE;
virtual WebSize size() OVERRIDE { return m_size; }
virtual void willStartLiveResize() OVERRIDE;
virtual void resize(const WebSize&) OVERRIDE;
virtual void willEndLiveResize() OVERRIDE;
virtual void animate(double frameBeginTime) OVERRIDE;
virtual void layout() OVERRIDE;
virtual void paint(WebCanvas*, const WebRect&) OVERRIDE;
virtual void themeChanged() OVERRIDE;
virtual void setCompositorSurfaceReady() OVERRIDE;
virtual void composite(bool finish) OVERRIDE;
virtual bool handleInputEvent(const WebInputEvent&) OVERRIDE;
virtual void mouseCaptureLost() OVERRIDE;
virtual void setFocus(bool enable) OVERRIDE;
virtual bool setComposition(
const WebString& text,
const WebVector<WebCompositionUnderline>& underlines,
int selectionStart, int selectionEnd) OVERRIDE;
virtual bool confirmComposition() OVERRIDE;
virtual bool confirmComposition(const WebString& text) OVERRIDE;
virtual bool compositionRange(size_t* location, size_t* length) OVERRIDE;
virtual WebTextInputType textInputType() OVERRIDE;
virtual bool caretOrSelectionRange(size_t* location, size_t* length) OVERRIDE;
virtual void setTextDirection(WebTextDirection) OVERRIDE;
virtual bool isAcceleratedCompositingActive() const OVERRIDE { return false; }
void init(WebCore::FramelessScrollView* widget, const WebRect& bounds);
WebWidgetClient* client() { return m_client; }
void handleMouseMove(const WebMouseEvent&);
void handleMouseLeave(const WebMouseEvent&);
void handleMouseDown(const WebMouseEvent&);
void handleMouseUp(const WebMouseEvent&);
void handleMouseDoubleClick(const WebMouseEvent&);
void handleMouseWheel(const WebMouseWheelEvent&);
bool handleGestureEvent(const WebGestureEvent&);
bool handleTouchEvent(const WebTouchEvent&);
bool handleKeyEvent(const WebKeyboardEvent&);
protected:
friend class WebPopupMenu; friend class WTF::RefCounted<WebPopupMenuImpl>;
WebPopupMenuImpl(WebWidgetClient*);
~WebPopupMenuImpl();
virtual void invalidateRootView(const WebCore::IntRect&, bool) OVERRIDE;
virtual void invalidateContentsAndRootView(const WebCore::IntRect&, bool) OVERRIDE;
virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool) OVERRIDE;
virtual void scheduleAnimation() OVERRIDE;
virtual void scroll(
const WebCore::IntSize& scrollDelta, const WebCore::IntRect& scrollRect,
const WebCore::IntRect& clipRect) OVERRIDE;
virtual WebCore::IntPoint screenToRootView(const WebCore::IntPoint&) const OVERRIDE;
virtual WebCore::IntRect rootViewToScreen(const WebCore::IntRect&) const OVERRIDE;
virtual PlatformPageClient platformPageClient() const OVERRIDE { return 0; }
virtual void scrollbarsModeDidChange() const OVERRIDE;
virtual void setCursor(const WebCore::Cursor&) OVERRIDE;
virtual void setCursorHiddenUntilMouseMoves(bool) OVERRIDE;
virtual void popupClosed(WebCore::FramelessScrollView*) OVERRIDE;
WebWidgetClient* m_client;
WebSize m_size;
WebPoint m_lastMousePosition;
WebCore::FramelessScrollView* m_widget;
};
}
#endif