more fixes for horz scrolling, still unsuccessfully

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/wxUNIVERSAL@8436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-09-28 16:25:45 +00:00
parent bf4014c8de
commit 8dd0bb9ab7

View File

@@ -905,7 +905,7 @@ void wxTextCtrl::ShowHorzPosition(wxCoord pos)
// scroll forward
long col;
HitTestLine(GetValue(), pos - width, &col);
ScrollText(col + 1);
ScrollText(col);
}
}
}
@@ -994,6 +994,18 @@ void wxTextCtrl::RefreshLine(long line, long from, long to)
// drawing
// ----------------------------------------------------------------------------
/*
Several remarks about wxTextCtrl redraw logic:
1. only the regions which must be updated are redrawn, this means that we
never Refresh() the entire window but use RefreshLine() and
ScrollWindow() which only refresh small parts of it and iterate over the
update region in our DoDraw()
2. the text displayed on the screen is obtained using GetTextToShow(): it
should be used for all drawing/measuring
*/
wxString wxTextCtrl::GetTextToShow(const wxString& text) const
{
wxString textShown;
@@ -1125,10 +1137,16 @@ void wxTextCtrl::DoDrawTextInRect(wxDC& dc, const wxRect& rectUpdate)
// check that the string that we draw fits entirely into the text area,
// we don't want to draw just a part of characters
while ( rectText.GetRight() > m_ofsHorz + m_rectText.width )
while ( rectText.GetRight() > m_ofsHorz + m_rectText.GetRight() )
{
rectText.width -= GetTextWidth(text.Last());
text.RemoveLast();
if ( !text )
{
// string became empty, nothing to draw finally
return;
}
}
// do draw the text