aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/AutoComplete.cxx4
-rw-r--r--src/AutoComplete.h4
-rw-r--r--src/Platform.h1
-rw-r--r--src/ScintillaBase.cxx16
4 files changed, 19 insertions, 6 deletions
diff --git a/src/AutoComplete.cxx b/src/AutoComplete.cxx
index fec0f20e9..87077e92a 100644
--- a/src/AutoComplete.cxx
+++ b/src/AutoComplete.cxx
@@ -39,6 +39,7 @@ AutoComplete::AutoComplete() :
typesep('?'),
ignoreCase(false),
chooseSingle(false),
+ options(AutoCompleteOption::Normal),
posStart(0),
startLen(0),
cancelAtStartPos(true),
@@ -63,10 +64,11 @@ bool AutoComplete::Active() const noexcept {
void AutoComplete::Start(Window &parent, int ctrlID,
Sci::Position position, Point location, Sci::Position startLen_,
- int lineHeight, bool unicodeMode, Technology technology) {
+ int lineHeight, bool unicodeMode, Technology technology, ListOptions listOptions) {
if (active) {
Cancel();
}
+ lb->SetOptions(listOptions);
lb->Create(parent, ctrlID, location, lineHeight, unicodeMode, technology);
lb->Clear();
active = true;
diff --git a/src/AutoComplete.h b/src/AutoComplete.h
index c46530771..fa8f57287 100644
--- a/src/AutoComplete.h
+++ b/src/AutoComplete.h
@@ -25,6 +25,7 @@ public:
bool ignoreCase;
bool chooseSingle;
+ AutoCompleteOption options;
std::unique_ptr<ListBox> lb;
Sci::Position posStart;
Sci::Position startLen;
@@ -49,7 +50,8 @@ public:
/// Display the auto completion list positioned to be near a character position
void Start(Window &parent, int ctrlID, Sci::Position position, Point location,
- Sci::Position startLen_, int lineHeight, bool unicodeMode, Scintilla::Technology technology);
+ Sci::Position startLen_, int lineHeight, bool unicodeMode, Scintilla::Technology technology,
+ ListOptions listOptions);
/// The stop chars are characters which, when typed, cause the auto completion list to disappear
void SetStopChars(const char *stopChars_);
diff --git a/src/Platform.h b/src/Platform.h
index 10c63dd23..ce04d9b22 100644
--- a/src/Platform.h
+++ b/src/Platform.h
@@ -313,6 +313,7 @@ struct ListOptions {
std::optional<ColourRGBA> back;
std::optional<ColourRGBA> foreSelected;
std::optional<ColourRGBA> backSelected;
+ AutoCompleteOption options=AutoCompleteOption::Normal;
};
class ListBox : public Window {
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index 0adca2f6f..238299734 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -257,16 +257,17 @@ void ScintillaBase::AutoCompleteStart(Sci::Position lenEntered, const char *list
return;
}
}
- ac.Start(wMain, idAutoComplete, sel.MainCaret(), PointMainCaret(),
- lenEntered, vs.lineHeight, IsUnicodeMode(), technology);
ListOptions options{
vs.ElementColour(Element::List),
vs.ElementColour(Element::ListBack),
vs.ElementColour(Element::ListSelected),
- vs.ElementColour(Element::ListSelectedBack)
+ vs.ElementColour(Element::ListSelectedBack),
+ ac.options,
};
- ac.lb->SetOptions(options);
+
+ ac.Start(wMain, idAutoComplete, sel.MainCaret(), PointMainCaret(),
+ lenEntered, vs.lineHeight, IsUnicodeMode(), technology, options);
const PRectangle rcClient = GetClientRectangle();
Point pt = LocationFromPosition(sel.MainCaret() - lenEntered);
@@ -942,6 +943,13 @@ sptr_t ScintillaBase::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) {
case Message::AutoCGetAutoHide:
return ac.autoHide;
+ case Message::AutoCSetOptions:
+ ac.options = static_cast<AutoCompleteOption>(wParam);
+ break;
+
+ case Message::AutoCGetOptions:
+ return static_cast<sptr_t>(ac.options);
+
case Message::AutoCSetDropRestOfWord:
ac.dropRestOfWord = wParam != 0;
break;