Mercurial > projects > dwt-mac
changeset 132:a45406361e44
Fixed the Caret blinking
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 22 Mar 2009 20:22:57 +0100 |
parents | 03fac5984741 |
children | 6541b60caf79 |
files | dwt/widgets/Display.d |
diffstat | 1 files changed, 29 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/dwt/widgets/Display.d Mon Mar 16 22:38:50 2009 +0100 +++ b/dwt/widgets/Display.d Sun Mar 22 20:22:57 2009 +0100 @@ -331,7 +331,7 @@ Object data; String [] keys; Object [] values; - + /* * TEMPORARY CODE. Install the runnable that * gets the current display. This code will @@ -347,7 +347,7 @@ } setDevice (device); } - }; + }; } /* @@ -625,42 +625,8 @@ cursors = new Cursor [DWT.CURSOR_HAND + 1]; timerDelegate = cast(SWTWindowDelegate)(new SWTWindowDelegate()).alloc().init(); - caretTimer = new class(currentCaret) Runnable { - Caret currentCaret; - - this (Caret currentCaret) - { - this.currentCaret = currentCaret; - } - - public void run () { - if (currentCaret !is null) { - if (currentCaret is null || currentCaret.isDisposed()) return; - if (currentCaret.blinkCaret ()) { - int blinkRate = currentCaret.blinkRate; - if (blinkRate !is 0) timerExec (blinkRate, this); - } else { - currentCaret = null; - } - } - - } - }; - - hoverTimer = new class(currentControl) Runnable { - Control currentControl; - - this (Control currentControl) - { - this.currentControl = currentControl; - } - - public void run () { - if (currentControl !is null && !currentControl.isDisposed()) { - currentControl.sendMouseEvent (null, DWT.MouseHover, trackingControl !is null); - } - } - }; + caretTimer = new CaretTimer; + hoverTimer = new HoverTimer; } static void checkDisplay (Thread thread, bool multiple) { @@ -3104,14 +3070,38 @@ //TODO use custom timer instead of timerExec Runnable hoverTimer; + + class HoverTimer : Runnable + { + public void run () { + if (currentControl !is null && !currentControl.isDisposed()) { + currentControl.sendMouseEvent (null, DWT.MouseHover, trackingControl !is null); + } + } + } //TODO - use custom timer instead of timerExec Runnable caretTimer; + + class CaretTimer : Runnable + { + public void run () { + if (currentCaret !is null) { + if (this.outer.currentCaret is null || this.outer.currentCaret.isDisposed()) return; + if (currentCaret.blinkCaret ()) { + int blinkRate = currentCaret.blinkRate; + if (blinkRate !is 0) timerExec (blinkRate, this); + } else { + currentCaret = null; + } + } + } + } void setCurrentCaret (Caret caret) { // if (caretID !is 0) OS.RemoveEventLoopTimer (caretID); // caretID = 0; - currentCaret = caret; + currentCaret = caret; if (currentCaret !is null) { int blinkRate = currentCaret.blinkRate; timerExec (blinkRate, caretTimer);