aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2016-11-11 13:04:53 +1100
committerNeil <nyamatongwe@gmail.com>2016-11-11 13:04:53 +1100
commita8f96c1772bfaec14d91e2a1fe293879019770bb (patch)
tree0a91e042cd1204996b19fe8594b85783c9c8cf84 /cocoa
parentbd6b3866b43b54f2fdb58ea5435b04f75c0d2159 (diff)
downloadscintilla-mirror-a8f96c1772bfaec14d91e2a1fe293879019770bb.tar.gz
Make IME indicator visible in single phase drawing mode.
Diffstat (limited to 'cocoa')
-rw-r--r--cocoa/ScintillaCocoa.mm6
-rw-r--r--cocoa/ScintillaView.h2
-rw-r--r--cocoa/ScintillaView.mm22
3 files changed, 24 insertions, 6 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index 3ae4ab575..90752d71c 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -894,6 +894,12 @@ sptr_t ScintillaCocoa::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPar
HideFindIndicator();
return 0;
+ case SCI_SETPHASESDRAW: {
+ sptr_t r = ScintillaBase::WndProc(iMessage, wParam, lParam);
+ [ContentView().owner updateIndicatorIME];
+ return r;
+ }
+
default:
sptr_t r = ScintillaBase::WndProc(iMessage, wParam, lParam);
diff --git a/cocoa/ScintillaView.h b/cocoa/ScintillaView.h
index c397cad8d..82e8e3bca 100644
--- a/cocoa/ScintillaView.h
+++ b/cocoa/ScintillaView.h
@@ -130,6 +130,8 @@ extern NSString *const SCIUpdateUINotification;
- (void) suspendDrawing: (BOOL) suspend;
- (void) notification: (Scintilla::SCNotification*) notification;
+- (void) updateIndicatorIME;
+
// Scroller handling
- (void) setMarginWidth: (int) width;
- (SCIContentView*) content;
diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm
index 83e8f5398..8afb04f79 100644
--- a/cocoa/ScintillaView.mm
+++ b/cocoa/ScintillaView.mm
@@ -1386,6 +1386,21 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
//--------------------------------------------------------------------------------------------------
/**
+ * Setup a special indicator used in the editor to provide visual feedback for
+ * input composition, depending on language, keyboard etc.
+ */
+- (void) updateIndicatorIME
+{
+ [self setColorProperty: SCI_INDICSETFORE parameter: INDIC_IME fromHTML: @"#FF0000"];
+ const bool drawInBackground = [self message: SCI_GETPHASESDRAW] != 0;
+ [self setGeneralProperty: SCI_INDICSETUNDER parameter: INDIC_IME value: drawInBackground];
+ [self setGeneralProperty: SCI_INDICSETSTYLE parameter: INDIC_IME value: INDIC_PLAIN];
+ [self setGeneralProperty: SCI_INDICSETALPHA parameter: INDIC_IME value: 100];
+}
+
+//--------------------------------------------------------------------------------------------------
+
+/**
* Initialization of the view. Used to setup a few other things we need.
*/
- (id) initWithFrame: (NSRect) frame
@@ -1424,12 +1439,7 @@ sourceOperationMaskForDraggingContext: (NSDraggingContext) context
// which require our attention.
mBackend->SetDelegate(self);
- // Setup a special indicator used in the editor to provide visual feedback for
- // input composition, depending on language, keyboard etc.
- [self setColorProperty: SCI_INDICSETFORE parameter: INDIC_IME fromHTML: @"#FF0000"];
- [self setGeneralProperty: SCI_INDICSETUNDER parameter: INDIC_IME value: 1];
- [self setGeneralProperty: SCI_INDICSETSTYLE parameter: INDIC_IME value: INDIC_PLAIN];
- [self setGeneralProperty: SCI_INDICSETALPHA parameter: INDIC_IME value: 100];
+ [self updateIndicatorIME];
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self