#ifndef _WX_CARET_H_BASE_
#define _WX_CARET_H_BASE_
+#include "wx/defs.h"
+
+#if wxUSE_CARET
+
#ifdef __GNUG__
#pragma interface "caret.h"
#endif
// 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
// ----------
virtual void DoShow() = 0;
virtual void DoHide() = 0;
virtual void DoMove() = 0;
+ virtual void DoSize() { }
// the common initialization
void Init()
#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 // wxUSE_CARET
+
#endif // _WX_CARET_H_BASE_