From 794c599d481e46dbf9a5251a57fafb528b3fff2d Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 22 Mar 2021 12:56:26 +1100 Subject: Replace multiple mode setting calls on Surface with SetMode as this is extensible. For CallTip, GTK and Qt hardcode BidiR2L to false as they don't support bidirectional, its the same as current, and the BidiR2L state on EditModel isn't easily accessible. --- cocoa/ScintillaCocoa.mm | 6 ++---- gtk/ScintillaGTK.cxx | 6 ++---- qt/ScintillaEditBase/ScintillaQt.cpp | 3 +-- src/Editor.h | 8 ++------ win32/ScintillaWin.cxx | 4 +--- 5 files changed, 8 insertions(+), 19 deletions(-) diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index 8e7c80260..4a688bdff 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -1058,8 +1058,7 @@ void ScintillaCocoa::CTPaint(void *gc, NSRect rc) { #pragma unused(rc) std::unique_ptr surfaceWindow(Surface::Allocate(SC_TECHNOLOGY_DEFAULT)); surfaceWindow->Init(gc, wMain.GetID()); - surfaceWindow->SetUnicodeMode(SC_CP_UTF8 == ct.codePage); - surfaceWindow->SetDBCSMode(ct.codePage); + surfaceWindow->SetMode(SurfaceMode(ct.codePage, BidirectionalR2L())); ct.PaintCT(surfaceWindow.get()); surfaceWindow->Release(); } @@ -1428,8 +1427,7 @@ void ScintillaCocoa::StartDrag() { SurfaceImpl pixmap; pixmap.InitPixMap(static_cast(imageRect.Width()), static_cast(imageRect.Height()), NULL, NULL); - pixmap.SetUnicodeMode(IsUnicodeMode()); - pixmap.SetDBCSMode(CodePage()); + pixmap.SetMode(SurfaceMode(CodePage(), BidirectionalR2L())); CGContextRef gc = pixmap.GetContext(); // To make Paint() work on a bitmap, we have to flip our coordinates and translate the origin diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index 50e46ecc8..312ad1f94 100755 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -2980,8 +2980,7 @@ gboolean ScintillaGTK::DrawCT(GtkWidget *widget, cairo_t *cr, CallTip *ctip) { try { std::unique_ptr surfaceWindow(Surface::Allocate(SC_TECHNOLOGY_DEFAULT)); surfaceWindow->Init(cr, widget); - surfaceWindow->SetUnicodeMode(SC_CP_UTF8 == ctip->codePage); - surfaceWindow->SetDBCSMode(ctip->codePage); + surfaceWindow->SetMode(SurfaceMode(ctip->codePage, false)); ctip->PaintCT(surfaceWindow.get()); surfaceWindow->Release(); } catch (...) { @@ -2997,8 +2996,7 @@ gboolean ScintillaGTK::ExposeCT(GtkWidget *widget, GdkEventExpose * /*ose*/, Cal std::unique_ptr surfaceWindow(Surface::Allocate(SC_TECHNOLOGY_DEFAULT)); cairo_t *cr = gdk_cairo_create(WindowFromWidget(widget)); surfaceWindow->Init(cr, widget); - surfaceWindow->SetUnicodeMode(SC_CP_UTF8 == ctip->codePage); - surfaceWindow->SetDBCSMode(ctip->codePage); + surfaceWindow->SetMode(SurfaceMode(ctip->codePage, false)); ctip->PaintCT(surfaceWindow.get()); surfaceWindow->Release(); cairo_destroy(cr); diff --git a/qt/ScintillaEditBase/ScintillaQt.cpp b/qt/ScintillaEditBase/ScintillaQt.cpp index 06314187e..bb6dad410 100644 --- a/qt/ScintillaEditBase/ScintillaQt.cpp +++ b/qt/ScintillaEditBase/ScintillaQt.cpp @@ -691,8 +691,7 @@ public: if (pct->inCallTipMode) { std::unique_ptr surfaceWindow = Surface::Allocate(0); surfaceWindow->Init(this); - surfaceWindow->SetUnicodeMode(SC_CP_UTF8 == pct->codePage); - surfaceWindow->SetDBCSMode(pct->codePage); + surfaceWindow->SetMode(SurfaceMode(pct->codePage, false)); pct->PaintCT(surfaceWindow.get()); } } diff --git a/src/Editor.h b/src/Editor.h index d4f997af6..20f2c53a4 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -653,18 +653,14 @@ public: if (ed->wMain.GetID()) { surf = Surface::Allocate(technology != -1 ? technology : ed->technology); surf->Init(ed->wMain.GetID()); - surf->SetUnicodeMode(SC_CP_UTF8 == ed->CodePage()); - surf->SetDBCSMode(ed->CodePage()); - surf->SetBidiR2L(ed->BidirectionalR2L()); + surf->SetMode(SurfaceMode(ed->CodePage(), ed->BidirectionalR2L())); } } AutoSurface(SurfaceID sid, Editor *ed, int technology = -1) { if (ed->wMain.GetID()) { surf = Surface::Allocate(technology != -1 ? technology : ed->technology); surf->Init(sid, ed->wMain.GetID()); - surf->SetUnicodeMode(SC_CP_UTF8 == ed->CodePage()); - surf->SetDBCSMode(ed->CodePage()); - surf->SetBidiR2L(ed->BidirectionalR2L()); + surf->SetMode(SurfaceMode(ed->CodePage(), ed->BidirectionalR2L())); } } // Deleted so AutoSurface objects can not be copied. diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index 44d08af71..4a8d1c5e9 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -3492,9 +3492,7 @@ LRESULT PASCAL ScintillaWin::CTWndProc( } #endif } - surfaceWindow->SetUnicodeMode(SC_CP_UTF8 == sciThis->ct.codePage); - surfaceWindow->SetDBCSMode(sciThis->ct.codePage); - surfaceWindow->SetBidiR2L(sciThis->BidirectionalR2L()); + surfaceWindow->SetMode(SurfaceMode(sciThis->ct.codePage, sciThis->BidirectionalR2L())); sciThis->ct.PaintCT(surfaceWindow.get()); #if defined(USE_D2D) if (pCTRenderTarget) -- cgit v1.2.3