]> git.saurik.com Git - wxWidgets.git/commitdiff
Resets scroll position on load
authorJulian Smart <julian@anthemion.co.uk>
Thu, 20 Oct 2005 22:51:57 +0000 (22:51 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Thu, 20 Oct 2005 22:51:57 +0000 (22:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35960 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/richtext/richtextctrl.h
src/richtext/richtextbuffer.cpp
src/richtext/richtextctrl.cpp

index a1e9c69772b713b5cf0f9e8945334f7f0aaeeb9f..fcd77bd77e610505f0a44c5981e40ac1d9bf7c3c 100644 (file)
@@ -561,7 +561,7 @@ public:
     virtual bool SetFont(const wxFont& font);
 
     /// Set up scrollbars, e.g. after a resize
-    virtual void SetupScrollbars();
+    virtual void SetupScrollbars(bool atTop = false);
 
     /// Keyboard navigation
     virtual bool Navigate(int keyCode, int flags);
index cf57ce9b69df9de39b7a0c977145108115600a5e..168cac92aa548aa754ed74f071a0497d8bb0ef56 100644 (file)
@@ -1949,6 +1949,8 @@ bool wxRichTextParagraph::Draw(wxDC& dc, const wxRichTextRange& WXUNUSED(range),
 /// Lay the item out
 bool wxRichTextParagraph::Layout(wxDC& dc, const wxRect& rect, int style)
 {
+    // ClearLines();
+
     // Increase the size of the paragraph due to spacing
     int spaceBeforePara = ConvertTenthsMMToPixels(dc, GetAttributes().GetParagraphSpacingBefore());
     int spaceAfterPara = ConvertTenthsMMToPixels(dc, GetAttributes().GetParagraphSpacingAfter());
@@ -4859,13 +4861,16 @@ bool wxRichTextPlainTextHandler::DoLoadFile(wxRichTextBuffer *buffer, wxInputStr
     {
         int ch = stream.GetC();
 
-        if (ch == 10 && lastCh != 13)
-            str += wxT('\n');
-
-        if (ch > 0 && ch != 10)
-            str += wxChar(ch);
-
-        lastCh = ch;
+        if (!stream.Eof())
+        {
+            if (ch == 10 && lastCh != 13)
+                str += wxT('\n');
+            
+            if (ch > 0 && ch != 10)
+                str += wxChar(ch);
+            
+            lastCh = ch;
+        }
     }
 
     buffer->Clear();
index 057deed1fa0b3a66dcf842fab5890c88489b06e9..272fa94fb343d138162f83e48f971385b90146fc 100644 (file)
@@ -1331,7 +1331,7 @@ void wxRichTextCtrl::OnSize(wxSizeEvent& event)
 }
 
 /// Set up scrollbars, e.g. after a resize
-void wxRichTextCtrl::SetupScrollbars()
+void wxRichTextCtrl::SetupScrollbars(bool atTop)
 {
     if (m_freezeCount)
         return;
@@ -1351,8 +1351,9 @@ void wxRichTextCtrl::SetupScrollbars()
 
     int unitsY = maxHeight/pixelsPerUnit;
 
-    int startX, startY;
-    GetViewStart(& startX, & startY);
+    int startX = 0, startY = 0;
+    if (!atTop)
+        GetViewStart(& startX, & startY);
 
     int maxPositionX = 0; // wxMax(sz.x - clientSize.x, 0);
     int maxPositionY = (wxMax(maxHeight - clientSize.y, 0))/pixelsPerUnit;
@@ -1413,6 +1414,7 @@ bool wxRichTextCtrl::LoadFile(const wxString& filename, int type)
     SetInsertionPoint(0);
     Layout();
     PositionCaret();
+    SetupScrollbars(true);
     Refresh();
     SendUpdateEvent();