fixes for ScrollWindow() in caret presence (hide and reshow it)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/wxUNIVERSAL@8665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-10-31 17:36:41 +00:00
parent 99eb9f350e
commit 409299535d
2 changed files with 23 additions and 0 deletions

View File

@@ -12,6 +12,10 @@
#ifndef _WX_CARET_H_BASE_ #ifndef _WX_CARET_H_BASE_
#define _WX_CARET_H_BASE_ #define _WX_CARET_H_BASE_
#include "wx/defs.h"
#if wxUSE_CARET
#ifdef __GNUG__ #ifdef __GNUG__
#pragma interface "caret.h" #pragma interface "caret.h"
#endif #endif
@@ -222,5 +226,7 @@ private:
wxCaret *m_caret; wxCaret *m_caret;
}; };
#endif // wxUSE_CARET
#endif // _WX_CARET_H_BASE_ #endif // _WX_CARET_H_BASE_

View File

@@ -41,6 +41,10 @@
#include "wx/univ/renderer.h" #include "wx/univ/renderer.h"
#include "wx/univ/theme.h" #include "wx/univ/theme.h"
#if wxUSE_CARET
#include "wx/caret.h"
#endif // wxUSE_CARET
// turn Refresh() debugging on/off // turn Refresh() debugging on/off
#define WXDEBUG_REFRESH #define WXDEBUG_REFRESH
@@ -756,6 +760,14 @@ wxRect wxWindow::ScrollNoRefresh(int dx, int dy, const wxRect *rectTotal)
ptDest.y += dy; ptDest.y += dy;
} }
#if wxUSE_CARET
// we need to hide the caret before moving or it will erase itself at
// the wrong (old) location
wxCaret *caret = GetCaret();
if ( caret )
caret->Hide();
#endif // wxUSE_CARET
// do move // do move
wxClientDC dc(this); wxClientDC dc(this);
wxBitmap bmp(size.x, size.y); wxBitmap bmp(size.x, size.y);
@@ -826,6 +838,11 @@ wxRect wxWindow::ScrollNoRefresh(int dx, int dy, const wxRect *rectTotal)
rect.x, rect.y, rect.x, rect.y,
rect.GetRight() + 1, rect.GetBottom() + 1); rect.GetRight() + 1, rect.GetBottom() + 1);
} }
#if wxUSE_CARET
if ( caret )
caret->Show();
#endif // wxUSE_CARET
} }
return rect; return rect;