aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gtk/PlatGTK.cxx6
-rw-r--r--gtk/ScintillaGTK.cxx14
2 files changed, 7 insertions, 13 deletions
diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx
index e56847483..f1445afc2 100644
--- a/gtk/PlatGTK.cxx
+++ b/gtk/PlatGTK.cxx
@@ -346,7 +346,7 @@ void Font::Release() {
namespace Scintilla {
#endif
-// On GTK+ 2.x, SurfaceID is a GdkDrawable* and on GTK+ 3.x, it is a cairo_t*
+// SurfaceID is a cairo_t*
class SurfaceImpl : public Surface {
encodingType et;
cairo_t *context;
@@ -534,11 +534,7 @@ void SurfaceImpl::Init(SurfaceID sid, WindowID wid) {
PLATFORM_ASSERT(sid);
Release();
PLATFORM_ASSERT(wid);
-#if GTK_CHECK_VERSION(3,0,0)
context = cairo_reference(reinterpret_cast<cairo_t *>(sid));
-#else
- context = gdk_cairo_create(reinterpret_cast<GdkDrawable *>(sid));
-#endif
pcontext = gtk_widget_create_pango_context(PWidget(wid));
layout = pango_layout_new(pcontext);
cairo_set_line_width(context, 1);
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index bd5ef08b4..b7d3fd22a 100644
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -1112,18 +1112,12 @@ void ScintillaGTK::SyncPaint(PRectangle rc) {
if (PWindow(wText)) {
Surface *sw = Surface::Allocate(SC_TECHNOLOGY_DEFAULT);
if (sw) {
-#if GTK_CHECK_VERSION(3,0,0)
cairo_t *cr = gdk_cairo_create(PWindow(wText));
sw->Init(cr, PWidget(wText));
-#else
- sw->Init(PWindow(wText), PWidget(wText));
-#endif
Paint(sw, rc);
sw->Release();
delete sw;
-#if GTK_CHECK_VERSION(3,0,0)
cairo_destroy(cr);
-#endif
}
}
if (paintState == paintAbandoned) {
@@ -2500,10 +2494,12 @@ gboolean ScintillaGTK::ExposeTextThis(GtkWidget * /*widget*/, GdkEventExpose *os
paintingAllText = rcPaint.Contains(rcClient);
Surface *surfaceWindow = Surface::Allocate(SC_TECHNOLOGY_DEFAULT);
if (surfaceWindow) {
- surfaceWindow->Init(PWindow(wText), PWidget(wText));
+ cairo_t *cr = gdk_cairo_create(PWindow(wText));
+ surfaceWindow->Init(cr, PWidget(wText));
Paint(surfaceWindow, rcPaint);
surfaceWindow->Release();
delete surfaceWindow;
+ cairo_destroy(cr);
}
if (paintState == paintAbandoned) {
// Painting area was insufficient to cover new styling or brace highlight positions
@@ -2811,12 +2807,14 @@ gboolean ScintillaGTK::ExposeCT(GtkWidget *widget, GdkEventExpose * /*ose*/, Cal
try {
Surface *surfaceWindow = Surface::Allocate(SC_TECHNOLOGY_DEFAULT);
if (surfaceWindow) {
- surfaceWindow->Init(WindowFromWidget(widget), widget);
+ cairo_t *cr = gdk_cairo_create(WindowFromWidget(widget));
+ surfaceWindow->Init(cr, widget);
surfaceWindow->SetUnicodeMode(SC_CP_UTF8 == ctip->codePage);
surfaceWindow->SetDBCSMode(ctip->codePage);
ctip->PaintCT(surfaceWindow);
surfaceWindow->Release();
delete surfaceWindow;
+ cairo_destroy(cr);
}
} catch (...) {
// No pointer back to Scintilla to save status