summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/PopupMenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/PopupMenu.h')
-rw-r--r--WebCore/platform/PopupMenu.h50
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
};