diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ScintillaBase.cxx | 23 | ||||
| -rw-r--r-- | src/ScintillaBase.h | 1 | 
2 files changed, 22 insertions, 2 deletions
| diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index 9526ab968..adf21ce6b 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -38,6 +38,7 @@  ScintillaBase::ScintillaBase() {  	displayPopupMenu = true;  	listType = 0; +	maxListWidth = 0;  #ifdef SCI_LEXER  	lexLanguage = SCLEX_CONTAINER;  	lexCurrent = 0; @@ -214,7 +215,8 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {  			return;  		}  	} -	ac.Start(wMain, idAutoComplete, currentPos, lenEntered, vs.lineHeight, IsUnicodeMode()); +	ac.Start(wMain, idAutoComplete, currentPos, LocationFromPosition(currentPos), +				lenEntered, vs.lineHeight, IsUnicodeMode());  	PRectangle rcClient = GetClientRectangle();  	Point pt = LocationFromPosition(currentPos - lenEntered); @@ -242,7 +244,8 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {  	rcac.bottom = Platform::Minimum(rcac.top + heightLB, rcClient.bottom);  	ac.lb->SetPositionRelative(rcac, wMain);  	ac.lb->SetFont(vs.styles[STYLE_DEFAULT].font); -	ac.lb->SetAverageCharWidth(vs.styles[STYLE_DEFAULT].aveCharWidth); +	unsigned int aveCharWidth = vs.styles[STYLE_DEFAULT].aveCharWidth; +	ac.lb->SetAverageCharWidth(aveCharWidth);  	ac.lb->SetDoubleClickAction(AutoCompleteDoubleClick, this);  	ac.SetList(list); @@ -251,6 +254,8 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {  	PRectangle rcList = ac.lb->GetDesiredRect();  	int heightAlloced = rcList.bottom - rcList.top;  	widthLB = Platform::Maximum(widthLB, rcList.right - rcList.left); +	if (maxListWidth != 0) +		widthLB = Platform::Minimum(widthLB, aveCharWidth*maxListWidth);  	// Make an allowance for large strings in list  	rcList.left = pt.x - ac.lb->CaretFromEdge();  	rcList.right = rcList.left + widthLB; @@ -559,6 +564,20 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara  	case SCI_AUTOCGETDROPRESTOFWORD:  		return ac.dropRestOfWord; +	case SCI_AUTOCSETMAXHEIGHT: +		ac.lb->SetVisibleRows(wParam); +		break; + +	case SCI_AUTOCGETMAXHEIGHT: +		return ac.lb->GetVisibleRows(); + +	case SCI_AUTOCSETMAXWIDTH: +		maxListWidth = wParam; +		break; + +	case SCI_AUTOCGETMAXWIDTH: +		return maxListWidth; +  	case SCI_REGISTERIMAGE:  		ac.lb->RegisterImage(wParam, reinterpret_cast<const char *>(lParam));  		break; diff --git a/src/ScintillaBase.h b/src/ScintillaBase.h index 362231148..631e3e05d 100644 --- a/src/ScintillaBase.h +++ b/src/ScintillaBase.h @@ -38,6 +38,7 @@ protected:  	int listType;			///< 0 is an autocomplete list  	SString listSelected;	///< Receives listbox selected string +	int maxListWidth;		/// Maximum width of list, in average character widths  #ifdef SCI_LEXER  	int lexLanguage; | 
