X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/54da4255a20216b070ec044ae2b8af75e9f2681f..844f90fba68fc9fbd3e839825d406839ee9fb9fb:/include/wx/caret.h diff --git a/include/wx/caret.h b/include/wx/caret.h index bdc4279c56..07e06afeea 100644 --- a/include/wx/caret.h +++ b/include/wx/caret.h @@ -12,6 +12,10 @@ #ifndef _WX_CARET_H_BASE_ #define _WX_CARET_H_BASE_ +#ifdef __GNUG__ +#pragma interface "caret.h" +#endif + // --------------------------------------------------------------------------- // forward declarations // --------------------------------------------------------------------------- @@ -91,6 +95,15 @@ public: // get the window we're associated with wxWindow *GetWindow() const { return (wxWindow *)m_window; } + // change the size of the caret + void SetSize(int width, int height) { + m_width = width; + m_height = height; + DoSize(); + } + void SetSize(const wxSize& size) { SetSize(size.x, size.y); } + + // operations // ---------- @@ -146,6 +159,7 @@ protected: virtual void DoShow() = 0; virtual void DoHide() = 0; virtual void DoMove() = 0; + virtual void DoSize() { } // the common initialization void Init() @@ -178,11 +192,35 @@ private: #if defined(__WXMSW__) #include "wx/msw/caret.h" -#elif defined(__WXPM__) - #include "wx/os2/caret.h" #else #include "wx/generic/caret.h" #endif // platform +// ---------------------------------------------------------------------------- +// wxCaretSuspend: a simple class which hides the caret in its ctor and +// restores it in the dtor, this should be used when drawing on the screen to +// avoid overdrawing the caret +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxCaretSuspend +{ +public: + wxCaretSuspend(wxWindow *win) + { + m_caret = win->GetCaret(); + if ( m_caret ) + m_caret->Hide(); + } + + ~wxCaretSuspend() + { + if ( m_caret ) + m_caret->Show(); + } + +private: + wxCaret *m_caret; +}; + #endif // _WX_CARET_H_BASE_