RebaseDlg: Correctly remember commits for rewriting on Squash after (Edit|Squash...
[TortoiseGit.git] / ext / scintilla / backgroundcolors.patch
blob8302dd74bfd4f4b6c98bce48d29cf7d34e4949a9
1 ext/scintilla/include/Scintilla.h | 2 ++
2 ext/scintilla/src/EditView.cxx | 12 +++++++++++-
3 ext/scintilla/src/EditView.h | 1 +
4 ext/scintilla/src/Editor.cxx | 1 +
5 ext/scintilla/src/Editor.h | 2 ++
6 ext/scintilla/win32/ScintillaWin.cxx | 8 ++++++++
7 6 files changed, 25 insertions(+), 1 deletion(-)
9 diff --git a/ext/scintilla/include/Scintilla.h b/ext/scintilla/include/Scintilla.h
10 index 92919bbae..29fd76abc 100644
11 --- a/ext/scintilla/include/Scintilla.h
12 +++ b/ext/scintilla/include/Scintilla.h
13 @@ -1288,6 +1288,8 @@ typedef sptr_t (*SciFnDirectStatus)(sptr_t ptr, unsigned int iMessage, uptr_t wP
15 #endif
17 +#define SCN_GETBKCOLOR 5000
19 /* These structures are defined to be exactly the same shape as the Win32
20 * CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.
21 * So older code that treats Scintilla as a RichEdit will work. */
22 diff --git a/ext/scintilla/src/EditView.cxx b/ext/scintilla/src/EditView.cxx
23 index a1ac8b027..12b4ac6ce 100644
24 --- a/ext/scintilla/src/EditView.cxx
25 +++ b/ext/scintilla/src/EditView.cxx
26 @@ -65,6 +65,7 @@
27 #include "MarginView.h"
28 #include "EditView.h"
29 #include "ElapsedPeriod.h"
30 +#include "Editor.h"
32 using namespace Scintilla;
33 using namespace Scintilla::Internal;
34 @@ -196,6 +197,7 @@ EditView::EditView() {
35 tabArrowHeight = 4;
36 customDrawTabArrow = nullptr;
37 customDrawWrapMarker = nullptr;
38 + editor = nullptr;
41 EditView::~EditView() = default;
42 @@ -2389,7 +2391,15 @@ void EditView::DrawLine(Surface *surface, const EditModel &model, const ViewStyl
45 // See if something overrides the line background colour.
46 - const ColourOptional background = vsDraw.Background(model.GetMark(line), model.caret.active, ll->containsCaret);
47 + ColourOptional background = vsDraw.Background(model.GetMark(line), model.caret.active, ll->containsCaret);
48 + SCNotification scn = { 0 };
49 + scn.nmhdr.code = SCN_GETBKCOLOR;
50 + scn.line = line;
51 + scn.lParam = -1;
52 + if (editor)
53 + ((Editor*)editor)->NotifyParent(&scn);
54 + if (scn.lParam != -1)
55 + background = ColourRGBA::FromRGB(static_cast<int>(scn.lParam));
57 const Sci::Position posLineStart = model.pdoc->LineStart(line);
59 diff --git a/ext/scintilla/src/EditView.h b/ext/scintilla/src/EditView.h
60 index 7b8064a95..3fdd2d46c 100644
61 --- a/ext/scintilla/src/EditView.h
62 +++ b/ext/scintilla/src/EditView.h
63 @@ -77,6 +77,7 @@ public:
64 std::unique_ptr<Surface> pixmapLine;
65 std::unique_ptr<Surface> pixmapIndentGuide;
66 std::unique_ptr<Surface> pixmapIndentGuideHighlight;
67 + void *editor;
69 LineLayoutCache llc;
70 std::unique_ptr<IPositionCache> posCache;
71 diff --git a/ext/scintilla/src/Editor.cxx b/ext/scintilla/src/Editor.cxx
72 index 305ce5326..7e012d616 100644
73 --- a/ext/scintilla/src/Editor.cxx
74 +++ b/ext/scintilla/src/Editor.cxx
75 @@ -122,6 +122,7 @@ static constexpr bool IsAllSpacesOrTabs(std::string_view sv) noexcept {
78 Editor::Editor() : durationWrapOneByte(0.000001, 0.00000001, 0.00001) {
79 + view.editor = this;
80 ctrlID = 0;
82 stylesValid = false;
83 diff --git a/ext/scintilla/src/Editor.h b/ext/scintilla/src/Editor.h
84 index 0445dcd85..60c4a8140 100644
85 --- a/ext/scintilla/src/Editor.h
86 +++ b/ext/scintilla/src/Editor.h
87 @@ -7,6 +7,7 @@
89 #ifndef EDITOR_H
90 #define EDITOR_H
91 +#include "Scintilla.h"
93 namespace Scintilla::Internal {
95 @@ -678,6 +679,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
96 public:
97 ~Editor() override;
99 + virtual void NotifyParent(SCNotification *scn) = 0;
100 // Public so the COM thunks can access it.
101 bool IsUnicodeMode() const noexcept;
102 // Public so scintilla_send_message can use it.
103 diff --git a/ext/scintilla/win32/ScintillaWin.cxx b/ext/scintilla/win32/ScintillaWin.cxx
104 index b460d1fe2..4603c8313 100644
105 --- a/ext/scintilla/win32/ScintillaWin.cxx
106 +++ b/ext/scintilla/win32/ScintillaWin.cxx
107 @@ -421,6 +421,7 @@ class ScintillaWin :
108 void SetCtrlID(int identifier) override;
109 int GetCtrlID() override;
110 void NotifyParent(NotificationData scn) override;
111 + virtual void NotifyParent(SCNotification *scn);
112 void NotifyDoubleClick(Point pt, KeyMod modifiers) override;
113 std::unique_ptr<CaseFolder> CaseFolderForEncoding() override;
114 std::string CaseMapString(const std::string &s, CaseMapping caseMapping) override;
115 @@ -2456,6 +2457,13 @@ void ScintillaWin::NotifyParent(NotificationData scn) {
116 GetCtrlID(), reinterpret_cast<LPARAM>(&scn));
119 +void ScintillaWin::NotifyParent(SCNotification *scn) {
120 + scn->nmhdr.hwndFrom = MainHWND();
121 + scn->nmhdr.idFrom = GetCtrlID();
122 + ::SendMessage(::GetParent(MainHWND()), WM_NOTIFY,
123 + GetCtrlID(), reinterpret_cast<LPARAM>(scn));
126 void ScintillaWin::NotifyDoubleClick(Point pt, KeyMod modifiers) {
127 //Platform::DebugPrintf("ScintillaWin Double click 0\n");
128 ScintillaBase::NotifyDoubleClick(pt, modifiers);