X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/343ef639a9c054e4d1883156b38a6b02fd629fd7..c36818c8e32dd4245222f62995119d8652b30324:/src/richtext/richtextctrl.cpp diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index 08f62df425..c95805f58a 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/richtext/richeditctrl.cpp +// Name: src/richtext/richtextctrl.cpp // Purpose: A rich edit control // Author: Julian Smart // Modified by: @@ -1221,6 +1221,7 @@ void wxRichTextCtrl::OnChar(wxKeyEvent& event) SetDefaultStyleToCursorStyle(); ScrollIntoView(m_caretPosition, WXK_RIGHT); + cmdEvent.SetPosition(m_caretPosition); GetEventHandler()->ProcessEvent(cmdEvent); Update(); @@ -1568,7 +1569,7 @@ bool wxRichTextCtrl::IsPositionVisible(long pos) const wxSize clientSize = GetClientSize(); clientSize.y -= GetBuffer().GetBottomMargin(); - return (rect.GetBottom() > (startY + GetBuffer().GetTopMargin())) && (rect.GetTop() < (startY + clientSize.y)); + return (rect.GetTop() >= (startY + GetBuffer().GetTopMargin())) && (rect.GetBottom() <= (startY + clientSize.y)); } void wxRichTextCtrl::SetCaretPosition(long position, bool showAtLineStart) @@ -2203,6 +2204,19 @@ void wxRichTextCtrl::OnSize(wxSizeEvent& event) event.Skip(); } +// Force any pending layout due to large buffer +void wxRichTextCtrl::ForceDelayedLayout() +{ + if (m_fullLayoutRequired) + { + m_fullLayoutRequired = false; + m_fullLayoutTime = 0; + GetBuffer().Invalidate(wxRICHTEXT_ALL); + ShowPosition(m_fullLayoutSavedPosition); + Refresh(false); + Update(); + } +} /// Idle-time processing void wxRichTextCtrl::OnIdle(wxIdleEvent& event) @@ -3012,12 +3026,12 @@ void wxRichTextCtrl::Redo() bool wxRichTextCtrl::CanUndo() const { - return GetCommandProcessor()->CanUndo(); + return GetCommandProcessor()->CanUndo() && IsEditable(); } bool wxRichTextCtrl::CanRedo() const { - return GetCommandProcessor()->CanRedo(); + return GetCommandProcessor()->CanRedo() && IsEditable(); } // ----------------------------------------------------------------------------