aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/AutoComplete.cxx5
-rw-r--r--src/AutoComplete.h17
-rw-r--r--src/ScintillaBase.cxx8
3 files changed, 20 insertions, 10 deletions
diff --git a/src/AutoComplete.cxx b/src/AutoComplete.cxx
index 81eb12d99..676a4124d 100644
--- a/src/AutoComplete.cxx
+++ b/src/AutoComplete.cxx
@@ -19,7 +19,8 @@ AutoComplete::AutoComplete() :
chooseSingle(false),
posStart(0),
startLen(0),
- cancelAtStartPos(true) {
+ cancelAtStartPos(true),
+ autoHide(true) {
stopChars[0] = '\0';
fillUpChars[0] = '\0';
}
@@ -117,7 +118,7 @@ void AutoComplete::Move(int delta) {
void AutoComplete::Select(const char *word) {
int pos = lb.Find(word);
//Platform::DebugPrintf("Autocompleting at <%s> %d\n", wordCurrent, pos);
- if (pos == -1)
+ if (pos == -1 && autoHide)
Cancel();
else
lb.Select(pos);
diff --git a/src/AutoComplete.h b/src/AutoComplete.h
index 294b58bd6..79d467529 100644
--- a/src/AutoComplete.h
+++ b/src/AutoComplete.h
@@ -24,20 +24,21 @@ public:
int startLen;
/// Should autocompletion be canceled if editor's currentPos <= startPos?
bool cancelAtStartPos;
-
+ bool autoHide;
+
AutoComplete();
~AutoComplete();
/// Is the auto completion list displayed?
bool Active();
-
+
/// Display the auto completion list positioned to be near a character position
void Start(Window &parent, int ctrlID, int position, int startLen_);
-
+
/// The stop chars are characters which, when typed, cause the auto completion list to disappear
void SetStopChars(const char *stopChars_);
bool IsStopChar(char ch);
-
+
/// The fillup chars are characters which, when typed, fill up the selected word
void SetFillUpChars(const char *fillUpChars_);
bool IsFillUpChar(char ch);
@@ -45,16 +46,16 @@ public:
/// The separator character is used when interpreting the list in SetList
void SetSeparator(char separator_);
char GetSeparator();
-
+
/// The list string contains a sequence of words separated by the separator character
void SetList(const char *list);
-
+
void Show();
void Cancel();
-
+
/// Move the current list element by delta, scrolling appropriately
void Move(int delta);
-
+
/// Select a list element that starts with word as the current element
void Select(const char *word);
};
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index ad2e97c90..fe873b0f2 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -459,6 +459,14 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara
AutoCompleteStart(0, reinterpret_cast<const char *>(lParam));
break;
+ case SCI_AUTOCSETAUTOHIDE:
+ ac.autoHide = wParam;
+ break;
+
+ case SCI_AUTOCGETAUTOHIDE:
+ return ac.autoHide;
+ break;
+
case SCI_CALLTIPSHOW: {
AutoCompleteCancel();
if (!ct.wCallTip.Created()) {