diff options
Diffstat (limited to 'WebCore/platform/PopupMenu.h')
-rw-r--r-- | WebCore/platform/PopupMenu.h | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/WebCore/platform/PopupMenu.h b/WebCore/platform/PopupMenu.h index 7348f9c..fc85d60 100644 --- a/WebCore/platform/PopupMenu.h +++ b/WebCore/platform/PopupMenu.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006 Apple Computer, Inc. + * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -21,11 +21,10 @@ #ifndef PopupMenu_h #define PopupMenu_h -#include <wtf/RefCounted.h> - #include "IntRect.h" #include "PopupMenuClient.h" #include <wtf/PassRefPtr.h> +#include <wtf/RefCounted.h> #if PLATFORM(MAC) #include <wtf/RetainPtr.h> @@ -35,7 +34,8 @@ class NSPopUpButtonCell; #endif #elif PLATFORM(WIN) -#include "ScrollBar.h" +#include "Scrollbar.h" +#include "ScrollbarClient.h" #include <wtf/RefPtr.h> typedef struct HWND__* HWND; typedef struct HDC__* HDC; @@ -50,20 +50,32 @@ typedef struct _GtkMenuItem GtkMenuItem; typedef struct _GtkWidget GtkWidget; #include <wtf/HashMap.h> #include <glib.h> +#elif PLATFORM(WX) +#ifdef __WXMSW__ +#include <wx/msw/winundef.h> +#endif +class wxMenu; +#include <wx/defs.h> +#include <wx/event.h> +#elif PLATFORM(CHROMIUM) +#include "PopupMenuPrivate.h" #endif namespace WebCore { class FrameView; -class PlatformScrollbar; +class Scrollbar; class PopupMenu : public RefCounted<PopupMenu> #if PLATFORM(WIN) , private ScrollbarClient #endif +#if PLATFORM(WX) + , public wxEvtHandler +#endif { public: - static PassRefPtr<PopupMenu> create(PopupMenuClient* client) { return new PopupMenu(client); } + static PassRefPtr<PopupMenu> create(PopupMenuClient* client) { return adoptRef(new PopupMenu(client)); } ~PopupMenu(); void disconnectClient() { m_popupClient = 0; } @@ -78,7 +90,7 @@ public: static bool itemWritingDirectionIsNatural(); #if PLATFORM(WIN) - PlatformScrollbar* scrollBar() const { return m_scrollBar.get(); } + Scrollbar* scrollbar() const { return m_scrollbar.get(); } bool up(unsigned lines = 1); bool down(unsigned lines = 1); @@ -96,7 +108,7 @@ public: void focusFirst(); void focusLast(); - void paint(const IntRect& damageRect, HDC hdc = 0); + void paint(const IntRect& damageRect, HDC = 0); HWND popupHandle() const { return m_popup; } @@ -117,14 +129,7 @@ public: #endif protected: - PopupMenu(PopupMenuClient* client); - -#if PLATFORM(WIN) - // ScrollBarClient - virtual void valueChanged(Scrollbar*); - virtual IntRect windowClipRect() const; - virtual bool isActive() const { return true; } -#endif + PopupMenu(PopupMenuClient*); private: PopupMenuClient* m_popupClient; @@ -139,10 +144,16 @@ private: void populate(const IntRect&); QWebPopup* m_popup; #elif PLATFORM(WIN) + // ScrollBarClient + virtual void valueChanged(Scrollbar*); + virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&); + virtual bool isActive() const { return true; } + virtual bool scrollbarCornerPresent() const { return false; } + void calculatePositionAndSize(const IntRect&, FrameView*); void invalidateItem(int index); - RefPtr<PlatformScrollbar> m_scrollBar; + RefPtr<Scrollbar> m_scrollbar; HWND m_popup; HDC m_DC; HBITMAP m_bmp; @@ -161,6 +172,11 @@ private: static void menuUnmapped(GtkWidget*, PopupMenu*); static void menuPositionFunction(GtkMenu*, gint*, gint*, gboolean*, PopupMenu*); static void menuRemoveItem(GtkWidget*, PopupMenu*); +#elif PLATFORM(WX) + wxMenu* m_menu; + void OnMenuItemSelected(wxCommandEvent&); +#elif PLATFORM(CHROMIUM) + PopupMenuPrivate p; #endif }; |