X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31297dbbd0296715024aa19043ad0b41c0e29fc9..4a4bf7eefbc04cb91652031d9a729720d52dde61:/include/wx/html/htmlwin.h diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h index 62e4136c59..d4629c9ad5 100644 --- a/include/wx/html/htmlwin.h +++ b/include/wx/html/htmlwin.h @@ -29,6 +29,8 @@ class wxHtmlWinModule; class wxHtmlHistoryArray; class wxHtmlProcessorList; class WXDLLIMPEXP_HTML wxHtmlWinAutoScrollTimer; +class WXDLLIMPEXP_HTML wxHtmlCellEvent; +class WXDLLIMPEXP_HTML wxHtmlLinkEvent; // wxHtmlWindow flags: @@ -142,6 +144,14 @@ protected: */ wxHtmlWindowMouseHelper(wxHtmlWindowInterface *iface); + /** + Virtual dtor. + + It is not really needed in this case but at leats it prevents gcc from + complaining about its absence. + */ + virtual ~wxHtmlWindowMouseHelper() { } + /// Returns true if the mouse moved since the last call to HandleIdle bool DidMouseMove() const { return m_tmpMouseMoved; } @@ -241,7 +251,7 @@ public: Init(); Create(parent, id, pos, size, style, name); } - ~wxHtmlWindow(); + virtual ~wxHtmlWindow(); bool Create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, @@ -401,6 +411,7 @@ protected: void OnCopy(wxCommandEvent& event); void OnMouseEnter(wxMouseEvent& event); void OnMouseLeave(wxMouseEvent& event); + void OnMouseCaptureLost(wxMouseCaptureLostEvent& event); #endif // wxUSE_CLIPBOARD // Returns new filter (will be stored into m_DefaultFilter variable) @@ -479,8 +490,6 @@ protected: // defaults to 10 pixels. int m_Borders; - int m_Style; - // current text selection or NULL wxHtmlSelection *m_selection; @@ -540,6 +549,101 @@ private: }; + + +BEGIN_DECLARE_EVENT_TYPES() + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_HTML, + wxEVT_COMMAND_HTML_CELL_CLICKED, 1000) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_HTML, + wxEVT_COMMAND_HTML_CELL_HOVER, 1001) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_HTML, + wxEVT_COMMAND_HTML_LINK_CLICKED, 1002) +END_DECLARE_EVENT_TYPES() + + +/*! + * Html cell window event + */ + +class WXDLLIMPEXP_HTML wxHtmlCellEvent : public wxCommandEvent +{ +public: + wxHtmlCellEvent() {} + wxHtmlCellEvent(wxEventType commandType, int id, + wxHtmlCell *cell, const wxPoint &pt, + const wxMouseEvent &ev) + : wxCommandEvent(commandType, id) + { + m_cell = cell; + m_pt = pt; + m_mouseEvent = ev; + m_bLinkWasClicked = false; + } + + wxHtmlCell* GetCell() const { return m_cell; } + wxPoint GetPoint() const { return m_pt; } + wxMouseEvent GetMouseEvent() const { return m_mouseEvent; } + + void SetLinkClicked(bool linkclicked) { m_bLinkWasClicked=linkclicked; } + bool GetLinkClicked() const { return m_bLinkWasClicked; } + + // default copy ctor, assignment operator and dtor are ok + virtual wxEvent *Clone() const { return new wxHtmlCellEvent(*this); } + +private: + wxHtmlCell *m_cell; + wxMouseEvent m_mouseEvent; + wxPoint m_pt; + + bool m_bLinkWasClicked; + + DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHtmlCellEvent) +}; + + + +/*! + * Html link event + */ + +class WXDLLIMPEXP_HTML wxHtmlLinkEvent : public wxCommandEvent +{ +public: + wxHtmlLinkEvent() {} + wxHtmlLinkEvent(int id, const wxHtmlLinkInfo &linkinfo) + : wxCommandEvent(wxEVT_COMMAND_HTML_LINK_CLICKED, id) + { + m_linkInfo = linkinfo; + } + + const wxHtmlLinkInfo &GetLinkInfo() const { return m_linkInfo; } + + // default copy ctor, assignment operator and dtor are ok + virtual wxEvent *Clone() const { return new wxHtmlLinkEvent(*this); } + +private: + wxHtmlLinkInfo m_linkInfo; + + DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHtmlLinkEvent) +}; + + +typedef void (wxEvtHandler::*wxHtmlCellEventFunction)(wxHtmlCellEvent&); +typedef void (wxEvtHandler::*wxHtmlLinkEventFunction)(wxHtmlLinkEvent&); + +#define wxHtmlCellEventHandler(func) \ + (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxHtmlCellEventFunction, &func) +#define wxHtmlLinkEventHandler(func) \ + (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxHtmlLinkEventFunction, &func) + +#define EVT_HTML_CELL_CLICKED(id, fn) \ + wx__DECLARE_EVT1(wxEVT_COMMAND_HTML_CELL_CLICKED, id, wxHtmlCellEventHandler(fn)) +#define EVT_HTML_CELL_HOVER(id, fn) \ + wx__DECLARE_EVT1(wxEVT_COMMAND_HTML_CELL_HOVER, id, wxHtmlCellEventHandler(fn)) +#define EVT_HTML_LINK_CLICKED(id, fn) \ + wx__DECLARE_EVT1(wxEVT_COMMAND_HTML_LINK_CLICKED, id, wxHtmlLinkEventHandler(fn)) + + #endif // wxUSE_HTML #endif // _WX_HTMLWIN_H_