aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ScintillaBase.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ScintillaBase.cxx')
-rw-r--r--src/ScintillaBase.cxx33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index 3979354eb..2da142462 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -202,9 +202,15 @@ int ScintillaBase::KeyCommand(unsigned int iMessage) {
return Editor::KeyCommand(iMessage);
}
-void ScintillaBase::AutoCompleteDoubleClick(void *p) {
- ScintillaBase *sci = static_cast<ScintillaBase *>(p);
- sci->AutoCompleteCompleted(0, SC_AC_DOUBLECLICK);
+void ScintillaBase::ListNotify(ListBoxEvent *plbe) {
+ switch (plbe->event) {
+ case ListBoxEvent::EventType::selectionChange:
+ AutoCompleteSelection();
+ break;
+ case ListBoxEvent::EventType::doubleClick:
+ AutoCompleteCompleted(0, SC_AC_DOUBLECLICK);
+ break;
+ }
}
void ScintillaBase::AutoCompleteInsert(Sci::Position startPos, int removeLen, const char *text, int textLen) {
@@ -293,7 +299,7 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {
ac.lb->SetFont(vs.styles[STYLE_DEFAULT].font);
unsigned int aveCharWidth = static_cast<unsigned int>(vs.styles[STYLE_DEFAULT].aveCharWidth);
ac.lb->SetAverageCharWidth(aveCharWidth);
- ac.lb->SetDoubleClickAction(AutoCompleteDoubleClick, this);
+ ac.lb->SetDelegate(this);
ac.SetList(list ? list : "");
@@ -340,6 +346,25 @@ void ScintillaBase::AutoCompleteMoveToCurrentWord() {
ac.Select(wordCurrent.c_str());
}
+void ScintillaBase::AutoCompleteSelection() {
+ int item = ac.GetSelection();
+ std::string selected;
+ if (item != -1) {
+ selected = ac.GetValue(item);
+ }
+
+ SCNotification scn = {};
+ scn.nmhdr.code = SCN_AUTOCSELECTIONCHANGE;
+ scn.message = 0;
+ scn.wParam = listType;
+ scn.listType = listType;
+ Sci::Position firstPos = ac.posStart - ac.startLen;
+ scn.position = firstPos;
+ scn.lParam = firstPos;
+ scn.text = selected.c_str();
+ NotifyParent(scn);
+}
+
void ScintillaBase::AutoCompleteCharacterAdded(char ch) {
if (ac.IsFillUpChar(ch)) {
AutoCompleteCompleted(ch, SC_AC_FILLUP);