X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/79d26b329ee395e73d4dcc34d2519d15bf0dd280..e14d10b039e68a701a447043a4031cf43e9fa90b:/include/wx/msw/textctrl.h diff --git a/include/wx/msw/textctrl.h b/include/wx/msw/textctrl.h index 270a4550e6..7c67cb23e3 100644 --- a/include/wx/msw/textctrl.h +++ b/include/wx/msw/textctrl.h @@ -35,6 +35,7 @@ public: Create(parent, id, value, pos, size, style, validator, name); } + ~wxTextCtrl(); bool Create(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, @@ -82,10 +83,16 @@ public: virtual void WriteText(const wxString& text); virtual void AppendText(const wxString& text); +#ifdef __WIN32__ + virtual bool EmulateKeyPress(const wxKeyEvent& event); +#endif // __WIN32__ + #if wxUSE_RICHEDIT // apply text attribute to the range of text (only works with richedit // controls) virtual bool SetStyle(long start, long end, const wxTextAttr& style); + virtual bool SetDefaultStyle(const wxTextAttr& style); + virtual bool GetStyle(long position, wxTextAttr& style); #endif // wxUSE_RICHEDIT // translate between the position (which is just an index in the text ctrl @@ -124,6 +131,8 @@ public: // Implementation from now on // -------------------------- + virtual void SetWindowStyleFlag(long style); + virtual void Command(wxCommandEvent& event); virtual bool MSWCommand(WXUINT param, WXWORD id); virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, @@ -160,17 +169,28 @@ public: void OnPaste(wxCommandEvent& event); void OnUndo(wxCommandEvent& event); void OnRedo(wxCommandEvent& event); + void OnDelete(wxCommandEvent& event); + void OnSelectAll(wxCommandEvent& event); void OnUpdateCut(wxUpdateUIEvent& event); void OnUpdateCopy(wxUpdateUIEvent& event); void OnUpdatePaste(wxUpdateUIEvent& event); void OnUpdateUndo(wxUpdateUIEvent& event); void OnUpdateRedo(wxUpdateUIEvent& event); + void OnUpdateDelete(wxUpdateUIEvent& event); + void OnUpdateSelectAll(wxUpdateUIEvent& event); + + // Show a context menu for Rich Edit controls (the standard + // EDIT control has one already) + void OnRightClick(wxMouseEvent& event); protected: // common part of all ctors void Init(); + // intercept WM_GETDLGCODE + virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); + // call this to increase the size limit (will do nothing if the current // limit is big enough) // @@ -193,14 +213,22 @@ protected: // set the selection possibly without scrolling the caret into view void DoSetSelection(long from, long to, bool scrollCaret = TRUE); + // return true if there is a non empty selection in the control + bool HasSelection() const; + // get the length of the line containing the character at the given // position long GetLengthOfLineContainingPos(long pos) const; + // send TEXT_UPDATED event, return TRUE if it was handled, FALSE otherwise + bool SendUpdateEvent(); + // override some base class virtuals virtual bool MSWShouldPreProcessMessage(WXMSG* pMsg); virtual wxSize DoGetBestSize() const; + virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const; + #if wxUSE_RICHEDIT // we're using RICHEDIT (and not simple EDIT) control if this field is not // 0, it also gives the version of the RICHEDIT control being used (1, 2 or @@ -208,9 +236,15 @@ protected: int m_verRichEdit; #endif // wxUSE_RICHEDIT + // if TRUE, SendUpdateEvent() will eat the next event (see comments in the + // code as to why this is needed) + bool m_suppressNextUpdate; + private: DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxTextCtrl) + + wxMenu* m_privateContextMenu; }; #endif