///////////////////////////////////////////////////////////////////////////////
-// Name: caret.h
+// Name: wx/caret.h
// Purpose: wxCaretBase class - the interface of wxCaret
// Author: Vadim Zeitlin
// Modified by:
// Created: 23.05.99
// RCS-ID: $Id$
-// Copyright: (c) wxWindows team
+// Copyright: (c) wxWidgets team
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#if wxUSE_CARET
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "caret.h"
-#endif
-
// ---------------------------------------------------------------------------
// forward declarations
// ---------------------------------------------------------------------------
(void)Create(window, size);
}
+ // a virtual dtor has been provided since this class has virtual members
+ virtual ~wxCaretBase() { }
+
// Create() functions - same as ctor but returns the success code
// --------------------------------------------------------------
// show/hide the caret (should be called by wxWindow when needed):
// Show() must be called as many times as Hide() + 1 to make the caret
// visible
- virtual void Show(bool show = TRUE)
+ virtual void Show(bool show = true)
{
if ( show )
{
DoHide();
}
}
- virtual void Hide() { Show(FALSE); }
+ virtual void Hide() { Show(false); }
// blink time is measured in milliseconds and is the time elapsed
// between 2 inversions of the caret (blink time of the caret is common
m_width = width;
m_height = height;
- return TRUE;
+ return true;
}
// pure virtuals to implement in the derived class
// avoid overdrawing the caret
// ----------------------------------------------------------------------------
+#ifdef wxHAS_CARET_USING_OVERLAYS
+
+// we don't need to hide the caret if it's rendered using overlays
+class WXDLLEXPORT wxCaretSuspend
+{
+public:
+ wxCaretSuspend(wxWindow *WXUNUSED(win)) {}
+
+ DECLARE_NO_COPY_CLASS(wxCaretSuspend)
+};
+
+#else // !wxHAS_CARET_USING_OVERLAYS
+
class WXDLLEXPORT wxCaretSuspend
{
public:
wxCaretSuspend(wxWindow *win)
{
m_caret = win->GetCaret();
- if ( m_caret )
+ m_show = false;
+ if ( m_caret && m_caret->IsVisible() )
+ {
m_caret->Hide();
+ m_show = true;
+ }
}
~wxCaretSuspend()
{
- if ( m_caret )
+ if ( m_caret && m_show )
m_caret->Show();
}
private:
wxCaret *m_caret;
+ bool m_show;
DECLARE_NO_COPY_CLASS(wxCaretSuspend)
};
+#endif // wxHAS_CARET_USING_OVERLAYS/!wxHAS_CARET_USING_OVERLAYS
+
#endif // wxUSE_CARET
#endif // _WX_CARET_H_BASE_
-