aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornyamatongwe <unknown>2000-09-22 11:19:36 +0000
committernyamatongwe <unknown>2000-09-22 11:19:36 +0000
commit331d7544ceccdd2ebb77c0497eb458eaaf0e5915 (patch)
tree02bf721d4bde545e627a6fac3e0e065fbba0a458 /src
parenta72c43d215b4ca861c69c9f4a8d8a13b69e5d196 (diff)
downloadscintilla-mirror-331d7544ceccdd2ebb77c0497eb458eaaf0e5915.tar.gz
An hasFocus flag was added to separate logical focus from environment
determined focus. hasFocus determines whether the caret is displayed.
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx23
-rw-r--r--src/Editor.h4
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);