#ifndef _WX_CARET_H_BASE_
#define _WX_CARET_H_BASE_
+#ifdef __GNUG__
+#pragma interface "caret.h"
+#endif
+
// ---------------------------------------------------------------------------
// forward declarations
// ---------------------------------------------------------------------------
class WXDLLEXPORT wxWindow;
class WXDLLEXPORT wxWindowBase;
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// headers we have to include
+// ----------------------------------------------------------------------------
+
+#include "wx/gdicmn.h" // for wxPoint, wxSize
+
+// ----------------------------------------------------------------------------
// A caret is a blinking cursor showing the position where the typed text will
// appear. It can be either a solid block or a custom bitmap (TODO)
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
class WXDLLEXPORT wxCaretBase
{
// is the caret valid?
bool IsOk() const { return m_width != 0 && m_height != 0; }
+ // is the caret currently shown?
+ bool IsVisible() const { return m_countVisible > 0; }
+
// get the caret position
void GetPosition(int *x, int *y) const
{
// 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
// ----------
{
if ( show )
{
- if ( ++m_countVisible > 0 )
+ if ( m_countVisible++ == 0 )
DoShow();
}
else
{
- if ( --m_countVisible < 1 )
+ if ( --m_countVisible == 0 )
DoHide();
}
}
virtual void DoShow() = 0;
virtual void DoHide() = 0;
virtual void DoMove() = 0;
+ virtual void DoSize() { }
// the common initialization
void Init()
// now include the real thing
// ---------------------------------------------------------------------------
-#ifdef __WXMSW__
+#if defined(__WXMSW__)
#include "wx/msw/caret.h"
#else
- // not implemented yet
- typedef wxCaretBase wxCaret;
+ #include "wx/generic/caret.h"
#endif // platform
#endif // _WX_CARET_H_BASE_