diff --git a/include/wx/caret.h b/include/wx/caret.h index 5a2926285a..9e0f3d3ea8 100644 --- a/include/wx/caret.h +++ b/include/wx/caret.h @@ -96,7 +96,11 @@ public: 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; } + void SetSize(int width, int height) { + m_width = width; + m_height = height; + DoSize(); + } void SetSize(const wxSize& size) { SetSize(size.x, size.y); } @@ -155,6 +159,7 @@ protected: virtual void DoShow() = 0; virtual void DoHide() = 0; virtual void DoMove() = 0; + virtual void DoSize() { } // the common initialization void Init() diff --git a/include/wx/msw/caret.h b/include/wx/msw/caret.h index 1ea59e6d78..29c00938e9 100644 --- a/include/wx/msw/caret.h +++ b/include/wx/msw/caret.h @@ -52,6 +52,7 @@ protected: virtual void DoMove(); virtual void DoShow(); virtual void DoHide(); + virtual void DoSize(); // helper function which creates the system caret bool MSWCreateCaret(); diff --git a/src/msw/caret.cpp b/src/msw/caret.cpp index 5378bc1f8f..cacc6801f5 100644 --- a/src/msw/caret.cpp +++ b/src/msw/caret.cpp @@ -160,3 +160,19 @@ void wxCaret::DoMove() } //else: we don't have caret right now, nothing to do (this does happen) } + + +// --------------------------------------------------------------------------- +// resizing the caret +// --------------------------------------------------------------------------- + +void wxCaret::DoSize() +{ + if ( m_hasCaret ) + { + m_hasCaret = FALSE; + CALL_CARET_API(DestroyCaret, ()); + MSWCreateCaret(); + DoMove(); + } +}