]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/caret.h
Added reparenting helper classes to help apps to grab the windows
[wxWidgets.git] / include / wx / generic / caret.h
index 93df894ea67ff945c51c20cbd7db91552b660b83..73dcaa463912eec1f1579376e27abaa226b37e5c 100644 (file)
@@ -9,15 +9,27 @@
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-#if 0 //def __GNUG__
-    #pragma implementation "caret.h"
-#endif
-
 #ifndef _WX_CARET_H_
 #define _WX_CARET_H_
 
+#ifdef __GNUG__
+#pragma interface "caret.h"
+#endif
+
 #include "wx/timer.h"
 
+class wxCaret;
+
+class WXDLLEXPORT wxCaretTimer : public wxTimer
+{
+public:
+    wxCaretTimer(wxCaret *caret);
+    virtual void Notify();
+
+private:
+    wxCaret *m_caret;
+};
+
 class wxCaret : public wxCaretBase
 {
 public:
@@ -36,33 +48,40 @@ public:
     // implementation
     // --------------
 
-    // blink the caret once
-    void Blink();
+    // called by wxWindow (not using the event tables)
+    virtual void OnSetFocus();
+    virtual void OnKillFocus();
+
+    // called by wxCaretTimer
+    void OnTimer();
 
 protected:
     virtual void DoShow();
     virtual void DoHide();
     virtual void DoMove();
 
+    // blink the caret once
+    void Blink();
+
+    // refresh the caret
+    void Refresh();
+
     // draw the caret on the given DC
     void DoDraw(wxDC *dc);
-
+    
 private:
     // GTK specific initialization
     void InitGeneric();
 
-    class CaretTimer : public wxTimer
-    {
-    public:
-        CaretTimer(wxCaret *caret) { m_caret = caret; }
-
-        virtual void Notify() { m_caret->Blink(); }
-
-    private:
-        wxCaret *m_caret;
-    } m_timer;
+    // the bitmap holding the part of window hidden by the caret when it was
+    // at (m_xOld, m_yOld)
+    wxBitmap      m_bmpUnderCaret;
+    int           m_xOld,
+                  m_yOld;
 
-    bool    m_blinkedOut;   // TRUE => caret hidden right now
+    wxCaretTimer  m_timer;
+    bool          m_blinkedOut,     // TRUE => caret hidden right now
+                  m_hasFocus;       // TRUE => our window has focus
 };
 
 #endif // _WX_CARET_H_