diff options
-rw-r--r-- | cocoa/ScintillaCocoa.h | 4 | ||||
-rw-r--r-- | cocoa/ScintillaCocoa.mm | 17 | ||||
-rw-r--r-- | cocoa/ScintillaView.mm | 4 |
3 files changed, 11 insertions, 14 deletions
diff --git a/cocoa/ScintillaCocoa.h b/cocoa/ScintillaCocoa.h index e4179b1bb..1a7852bce 100644 --- a/cocoa/ScintillaCocoa.h +++ b/cocoa/ScintillaCocoa.h @@ -143,8 +143,8 @@ public: ScintillaView* TopContainer(); - void SyncPaint(void* gc, PRectangle rc); - void Draw(NSRect rect, CGContextRef gc); + bool SyncPaint(void* gc, PRectangle rc); + bool Draw(NSRect rect, CGContextRef gc); virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); void SetTicking(bool on); diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index 7fc07c7c1..a19b62216 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -1439,29 +1439,24 @@ bool ScintillaCocoa::HaveMouseCapture() /** * Synchronously paint a rectangle of the window. */ -void ScintillaCocoa::SyncPaint(void* gc, PRectangle rc) +bool ScintillaCocoa::SyncPaint(void* gc, PRectangle rc) { paintState = painting; rcPaint = rc; PRectangle rcText = GetTextRectangle(); paintingAllText = rcPaint.Contains(rcText); + bool succeeded = true; Surface *sw = Surface::Allocate(SC_TECHNOLOGY_DEFAULT); if (sw) { sw->Init(gc, wMain.GetID()); Paint(sw, rc); - if (paintState == paintAbandoned) - { - // Do a full paint. - rcPaint = GetClientRectangle(); - paintState = painting; - paintingAllText = true; - Paint(sw, rcPaint); - } + succeeded = paintState != paintAbandoned; sw->Release(); delete sw; } paintState = notPainting; + return succeeded; } //-------------------------------------------------------------------------------------------------- @@ -1769,9 +1764,9 @@ void ScintillaCocoa::IdleTimerFired() * @param rect The area to paint, given in the sender's coordinate system. * @param gc The context we can use to paint. */ -void ScintillaCocoa::Draw(NSRect rect, CGContextRef gc) +bool ScintillaCocoa::Draw(NSRect rect, CGContextRef gc) { - SyncPaint(gc, NSRectToPRectangle(rect)); + return SyncPaint(gc, NSRectToPRectangle(rect)); } //-------------------------------------------------------------------------------------------------- diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm index ba363ef14..178762d68 100644 --- a/cocoa/ScintillaView.mm +++ b/cocoa/ScintillaView.mm @@ -127,7 +127,9 @@ NSString *SCIUpdateUINotification = @"SCIUpdateUI"; { CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort]; - mOwner.backend->Draw(rect, context); + if (!mOwner.backend->Draw(rect, context)) { + [self display]; + } } //-------------------------------------------------------------------------------------------------- |