aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/ScintillaHistory.html14
-rwxr-xr-xgtk/ScintillaGTK.cxx10
2 files changed, 19 insertions, 5 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index 63b56f701..4af05b217 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -573,6 +573,20 @@
</table>
<h2>Releases</h2>
<h3>
+ <a href="https://www.scintilla.org/scintilla521.zip">Release 5.2.1</a>
+ </h3>
+ <ul>
+ <li>
+ Released 9 February 2022.
+ </li>
+ <li>
+ Enable multi-threaded layout on GTK.
+ </li>
+ <li>
+ Fix re-entrant painting on GTK to maintain update region.
+ </li>
+ </ul>
+ <h3>
<a href="https://www.scintilla.org/scintilla520.zip">Release 5.2.0</a>
</h3>
<ul>
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index bc6402e30..dd22dcbc9 100755
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -2656,13 +2656,13 @@ gboolean ScintillaGTK::DrawTextThis(cairo_t *cr) {
rcPaint = GetClientRectangle();
- PLATFORM_ASSERT(rgnUpdate == nullptr);
+ cairo_rectangle_list_t *oldRgnUpdate = rgnUpdate;
rgnUpdate = cairo_copy_clip_rectangle_list(cr);
if (rgnUpdate && rgnUpdate->status != CAIRO_STATUS_SUCCESS) {
// If not successful then ignore
fprintf(stderr, "DrawTextThis failed to copy update region %d [%d]\n", rgnUpdate->status, rgnUpdate->num_rectangles);
cairo_rectangle_list_destroy(rgnUpdate);
- rgnUpdate = 0;
+ rgnUpdate = nullptr;
}
double x1, y1, x2, y2;
@@ -2687,7 +2687,7 @@ gboolean ScintillaGTK::DrawTextThis(cairo_t *cr) {
if (rgnUpdate) {
cairo_rectangle_list_destroy(rgnUpdate);
}
- rgnUpdate = 0;
+ rgnUpdate = oldRgnUpdate;
paintState = PaintState::notPainting;
} catch (...) {
errorStatus = Status::Failure;
@@ -2759,7 +2759,7 @@ gboolean ScintillaGTK::ExposeTextThis(GtkWidget * /*widget*/, GdkEventExpose *os
ose->area.x + ose->area.width,
ose->area.y + ose->area.height);
- PLATFORM_ASSERT(rgnUpdate == nullptr);
+ GdkRegion *oldRgnUpdate = rgnUpdate;
rgnUpdate = gdk_region_copy(ose->region);
const PRectangle rcClient = GetClientRectangle();
paintingAllText = rcPaint.Contains(rcClient);
@@ -2779,7 +2779,7 @@ gboolean ScintillaGTK::ExposeTextThis(GtkWidget * /*widget*/, GdkEventExpose *os
if (rgnUpdate) {
gdk_region_destroy(rgnUpdate);
}
- rgnUpdate = nullptr;
+ rgnUpdate = oldRgnUpdate;
} catch (...) {
errorStatus = Status::Failure;
}