diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Editor.cxx | 23 | ||||
| -rw-r--r-- | src/Editor.h | 4 | 
2 files changed, 24 insertions, 3 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 698bb65d2..5bfe8fb25 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -41,6 +41,7 @@ Editor::Editor() {  	printMagnification = 0;  	printColourMode = SC_PRINT_NORMAL; +	hasFocus = false;  	hideSelection = false;  	inOverstrike = false; @@ -608,7 +609,7 @@ void Editor::EnsureCaretVisible(bool useMargin) {  }  void Editor::ShowCaretAtCurrentPosition() { -	if (!wMain.HasFocus()) { +	if (!hasFocus) {  		caret.active = false;  		caret.on = false;  		return ; @@ -1096,7 +1097,7 @@ void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {  	}  	surfaceWindow->SetPalette(&palette, true); -	pixmapLine.SetPalette(&palette, !wMain.HasFocus()); +	pixmapLine.SetPalette(&palette, !hasFocus);  	//Platform::DebugPrintf("Paint: (%3d,%3d) ... (%3d,%3d)\n",  	//	rcArea.left, rcArea.top, rcArea.right, rcArea.bottom); @@ -2811,6 +2812,17 @@ void Editor::Tick() {  	}  } +void Editor::SetFocusState(bool focusState) { +	hasFocus = focusState; +	NotifyFocus(hasFocus); +	if (hasFocus) { +		ShowCaretAtCurrentPosition(); +		InvalidateCaret(); +	} else { +		DropCaret(); +	} +} +  static bool IsIn(int a, int minimum, int maximum) {  	return (a >= minimum) && (a <= maximum);  } @@ -4265,6 +4277,13 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {  	case SCI_GETOVERTYPE:  		return inOverstrike ? TRUE : FALSE; +	case SCI_SETFOCUS: +		SetFocusState(wParam); +		break; +	 +	case SCI_GETFOCUS: +		return hasFocus; +	  #ifdef MACRO_SUPPORT  	case SCI_STARTRECORD:  		recordingMacro = 1; diff --git a/src/Editor.h b/src/Editor.h index 83967cfd6..38d7ad913 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -61,7 +61,8 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	Palette palette;  	int printMagnification;  	int printColourMode; -	 + +	bool hasFocus;  	bool hideSelection;  	bool inOverstrike; @@ -285,6 +286,7 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	virtual void SetTicking(bool on) = 0;  	virtual void SetMouseCapture(bool on) = 0;  	virtual bool HaveMouseCapture() = 0; +	void SetFocusState(bool focusState);  	void CheckForChangeOutsidePaint(Range r);  	int BraceMatch(int position, int maxReStyle);  | 
