diff options
Diffstat (limited to 'src/ScintillaBase.cxx')
| -rw-r--r-- | src/ScintillaBase.cxx | 33 | 
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); | 
