@@ -857,31 +857,33 @@ public void run() {
857857 hookKeyPress ();
858858}
859859
860- boolean mouseHoverProc () {
860+ boolean mouseHoverProc (boolean clear ) {
861861 boolean hoverHooked = false ;
862- if (hoverTimerID != 0 ) {
862+ if (hoverTimerID != 0 && clear ) {
863863 hoverHooked = true ;
864864 window .clearTimeout (hoverTimerID );
865865 hoverTimerID = 0 ;
866866 }
867867 if (hoverHooked || hooks (SWT .MouseHover )) {
868868 hoverHooked = true ;
869- hoverTimerID = window .setTimeout (Clazz .makeFunction (new Runnable () {
870- public void run () {
871- if (!isDisposed ()) {
872- sendEvent (SWT .MouseHover );
869+ if (hoverTimerID == 0 ) {
870+ hoverTimerID = window .setTimeout (Clazz .makeFunction (new Runnable () {
871+ public void run () {
872+ if (!isDisposed ()) {
873+ sendEvent (SWT .MouseHover );
874+ }
875+ hoverTimerID = 0 ;
873876 }
874- hoverTimerID = 0 ;
875- }
876- }), 400 );
877+ }), 400 );
878+ }
877879 }
878880 return hoverHooked ;
879881}
880882
881883void hookMouseDown () {
882884 handle .onmousedown = new RunnableCompatibility () {
883885 public void run () {
884- boolean hoverHooked = mouseHoverProc ();
886+ boolean hoverHooked = mouseHoverProc (true );
885887 HTMLEventWrapper e = new HTMLEventWrapper (getEvent ());
886888 if (e .leftButtonHold ) {
887889 dragStatus = true ;
@@ -895,7 +897,7 @@ public void run() {
895897void hookMouseUp () {
896898 handle .onmouseup = new RunnableCompatibility () {
897899 public void run () {
898- boolean hoverHooked = mouseHoverProc ();
900+ boolean hoverHooked = mouseHoverProc (true );
899901 dragStatus = false ;
900902 if (!hoverHooked || hooks (SWT .MouseUp )) {
901903 HTMLEventWrapper e = new HTMLEventWrapper (getEvent ());
@@ -907,9 +909,20 @@ public void run() {
907909void hookMouseMove () {
908910 handle .onmousemove = new RunnableCompatibility () {
909911 public void run () {
910- boolean hoverHooked = mouseHoverProc ();
911- boolean dragHooked = false ;
912912 HTMLEventWrapper e = new HTMLEventWrapper (getEvent ());
913+ Widget widgetThis = Widget .this ;
914+ /**
915+ * @j2sNative
916+ * if (O$.isIE60 || O$.isIE55 || O$.isIE50) {
917+ * if (e.x == widgetThis.lastMouseMoveX && e.y == widgetThis.lastMouseMoveY) {
918+ * return true;
919+ * }
920+ * widgetThis.lastMouseMoveX = e.x;
921+ * widgetThis.lastMouseMoveY = e.y;
922+ * }
923+ */ { widgetThis .toString (); }
924+ boolean hoverHooked = mouseHoverProc (false );
925+ boolean dragHooked = false ;
913926 if (dragStatus && e .leftButtonHold
914927 && hooks (SWT .DragDetect )) {
915928 dragHooked = true ;
@@ -919,13 +932,14 @@ && hooks(SWT.DragDetect)) {
919932 if ((!dragHooked && !hoverHooked ) || hooks (SWT .MouseMove )) {
920933 sendMouseEvent (SWT .MouseMove , ((HTMLEvent ) getEvent ()).button , e .target , e .x , e .y );
921934 }
935+ toReturn (true );
922936 }
923937 };
924938}
925939void hookMouseEnter () {
926940 handle .onmouseover = new RunnableCompatibility () {
927941 public void run () {
928- boolean hoverHooked = mouseHoverProc ();
942+ boolean hoverHooked = mouseHoverProc (true );
929943 if (!hoverHooked || hooks (SWT .MouseEnter )) {
930944 HTMLEventWrapper e = new HTMLEventWrapper (getEvent ());
931945 sendMouseEvent (SWT .MouseEnter , ((HTMLEvent ) getEvent ()).button , e .target , e .x , e .y );
0 commit comments