X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31d8b4ad2425eb6c172c97cc3a39300ee2d39b85..24e97652b0f3a5796c3fab61d87b1f636d64ce79:/include/wx/html/htmlwin.h?ds=sidebyside diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h index 719fbc4fc5..da9d6431a9 100644 --- a/include/wx/html/htmlwin.h +++ b/include/wx/html/htmlwin.h @@ -32,6 +32,7 @@ class wxHtmlProcessor; class wxHtmlWinModule; class wxHtmlHistoryArray; class wxHtmlProcessorList; +class WXDLLIMPEXP_HTML wxHtmlWinAutoScrollTimer; // wxHtmlWindow flags: @@ -61,7 +62,7 @@ enum wxHtmlOpeningStatus // SetPage(text) or LoadPage(filename). // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow +class WXDLLIMPEXP_HTML wxHtmlWindow : public wxScrolledWindow { DECLARE_DYNAMIC_CLASS(wxHtmlWindow) friend class wxHtmlWinModule; @@ -207,11 +208,21 @@ protected: // actual size of window. This method also setup scrollbars void CreateLayout(); - void OnDraw(wxDC& dc); + void OnEraseBackground(wxEraseEvent& event); + void OnPaint(wxPaintEvent& event); void OnSize(wxSizeEvent& event); void OnMouseMove(wxMouseEvent& event); - void OnMouseButton(wxMouseEvent& event); - void OnIdle(wxIdleEvent& event); + void OnMouseDown(wxMouseEvent& event); + void OnMouseUp(wxMouseEvent& event); +#if wxUSE_CLIPBOARD + void OnKeyUp(wxKeyEvent& event); + void OnDoubleClick(wxMouseEvent& event); + void OnCopy(wxCommandEvent& event); + void OnMouseEnter(wxMouseEvent& event); + void OnMouseLeave(wxMouseEvent& event); +#endif // wxUSE_CLIPBOARD + + virtual void OnInternalIdle(); // Returns new filter (will be stored into m_DefaultFilter variable) virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;} @@ -223,9 +234,30 @@ protected: // and wxHW_NO_SELECTION not used) bool IsSelectionEnabled() const; + enum ClipboardType + { + Primary, + Secondary + }; + + // Copies selection to clipboard if the clipboard support is available + void CopySelection(ClipboardType t = Secondary); + +#if wxUSE_CLIPBOARD + // Convert selection to text: + wxString SelectionToText(); + + // Helper functions to select parts of page: + void SelectWord(const wxPoint& pos); + void SelectLine(const wxPoint& pos); + + // Automatic scrolling during selection: + void StopAutoScrolling(); +#endif // wxUSE_CLIPBOARD + protected: - // This is pointer to the first cell in parsed data. - // (Note: the first cell is usually top one = all other cells are sub-cells of this one) + // This is pointer to the first cell in parsed data. (Note: the first cell + // is usually top one = all other cells are sub-cells of this one) wxHtmlContainerCell *m_Cell; // parser which is used to parse HTML input. // Each wxHtmlWindow has it's own parser because sharing one global @@ -252,7 +284,30 @@ protected: int m_Style; + // current text selection or NULL + wxHtmlSelection *m_selection; + + // true if the user is dragging mouse to select text + bool m_makingSelection; + +#if wxUSE_CLIPBOARD + // time of the last doubleclick event, used to detect tripleclicks + // (tripleclicks are used to select whole line): + wxLongLong m_lastDoubleClick; + + // helper class to automatically scroll the window if the user is selecting + // text and the mouse leaves wxHtmlWindow: + wxHtmlWinAutoScrollTimer *m_timerAutoScroll; +#endif // wxUSE_CLIPBOARD + private: + // window content for double buffered rendering: + wxBitmap *m_backBuffer; + + // variables used when user is selecting text + wxPoint m_tmpSelFromPos; + wxHtmlCell *m_tmpSelFromCell; + // a flag indicated if mouse moved // (if TRUE we will try to change cursor in last call to OnIdle) bool m_tmpMouseMoved; @@ -269,9 +324,6 @@ private: // this filter is used when no filter is able to read some file static wxHtmlFilter *m_DefaultFilter; - static wxCursor *s_cur_hand; - static wxCursor *s_cur_arrow; - wxHtmlHistoryArray *m_History; // browser history int m_HistoryPos; @@ -287,7 +339,7 @@ private: }; -#endif +#endif // wxUSE_HTML #endif // _WX_HTMLWIN_H_