From 90143c254c8972b53a3d89568aa62635e9f6dae9 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 22 Apr 2014 16:27:29 +0000 Subject: [PATCH] Added wxRichTextCtrl::DoLayoutBuffer so an application can perform custom tasks before or after layout. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/richtext/richtextctrl.h | 5 +++++ interface/wx/richtext/richtextctrl.h | 5 +++++ src/richtext/richtextctrl.cpp | 13 +++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/include/wx/richtext/richtextctrl.h b/include/wx/richtext/richtextctrl.h index 52fe8f17b4..a1f2221b98 100644 --- a/include/wx/richtext/richtextctrl.h +++ b/include/wx/richtext/richtextctrl.h @@ -1418,6 +1418,11 @@ public: */ virtual bool LayoutContent(bool onlyVisibleRect = false); + /** + Implements layout. An application may override this to perform operations before or after layout. + */ + virtual void DoLayoutBuffer(wxRichTextBuffer& buffer, wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int flags); + /** Move the caret to the given character position. diff --git a/interface/wx/richtext/richtextctrl.h b/interface/wx/richtext/richtextctrl.h index 2ada97c629..0d15bdb185 100644 --- a/interface/wx/richtext/richtextctrl.h +++ b/interface/wx/richtext/richtextctrl.h @@ -1374,6 +1374,11 @@ public: */ virtual bool LayoutContent(bool onlyVisibleRect = false); + /** + Implements layout. An application may override this to perform operations before or after layout. + */ + virtual void DoLayoutBuffer(wxRichTextBuffer& buffer, wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int flags); + /** Move the caret to the given character position. diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index 95420c6688..ca31b9484e 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -468,7 +468,11 @@ void wxRichTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) { dc.SetUserScale(GetScale(), GetScale()); - GetBuffer().Layout(dc, context, availableSpace, availableSpace, wxRICHTEXT_FIXED_WIDTH|wxRICHTEXT_VARIABLE_HEIGHT); + GetBuffer().Defragment(context); + GetBuffer().UpdateRanges(); // If items were deleted, ranges need recalculation + + DoLayoutBuffer(GetBuffer(), dc, context, availableSpace, availableSpace, wxRICHTEXT_FIXED_WIDTH|wxRICHTEXT_VARIABLE_HEIGHT); + GetBuffer().Invalidate(wxRICHTEXT_NONE); dc.SetUserScale(1.0, 1.0); @@ -4058,7 +4062,7 @@ bool wxRichTextCtrl::LayoutContent(bool onlyVisibleRect) wxRichTextDrawingContext context(& GetBuffer()); GetBuffer().Defragment(context); GetBuffer().UpdateRanges(); // If items were deleted, ranges need recalculation - GetBuffer().Layout(dc, context, availableSpace, availableSpace, flags); + DoLayoutBuffer(GetBuffer(), dc, context, availableSpace, availableSpace, flags); GetBuffer().Invalidate(wxRICHTEXT_NONE); dc.SetUserScale(1.0, 1.0); @@ -4073,6 +4077,11 @@ bool wxRichTextCtrl::LayoutContent(bool onlyVisibleRect) return true; } +void wxRichTextCtrl::DoLayoutBuffer(wxRichTextBuffer& buffer, wxDC& dc, wxRichTextDrawingContext& context, const wxRect& rect, const wxRect& parentRect, int flags) +{ + buffer.Layout(dc, context, rect, parentRect, flags); +} + /// Is all of the selection, or the current caret position, bold? bool wxRichTextCtrl::IsSelectionBold() {