You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wave-commits@incubator.apache.org by wi...@apache.org on 2016/12/20 06:43:00 UTC

[3/3] incubator-wave git commit: Fixes #197 dead accent characters at end of line

Fixes #197 dead accent characters at end of line 

Project: http://git-wip-us.apache.org/repos/asf/incubator-wave/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-wave/commit/3dc20d6a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-wave/tree/3dc20d6a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-wave/diff/3dc20d6a

Branch: refs/heads/master
Commit: 3dc20d6ac46e65be91002eb8db8dc1b3085405ce
Parents: 614d94b
Author: Pablo Ojanguren <pa...@gmail.com>
Authored: Fri Nov 4 18:08:19 2016 +0100
Committer: Pablo Ojanguren <pa...@gmail.com>
Committed: Tue Dec 6 12:24:28 2016 +0100

----------------------------------------------------------------------
 .../wave/client/common/util/FakeSignalEvent.java   |  7 +++++++
 .../wave/client/common/util/SignalEvent.java       |  6 +++++-
 .../wave/client/common/util/SignalEventImpl.java   | 17 +++++++++++++----
 .../client/editor/event/EditorEventHandler.java    |  7 ++++++-
 4 files changed, 31 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/3dc20d6a/wave/src/main/java/org/waveprotocol/wave/client/common/util/FakeSignalEvent.java
----------------------------------------------------------------------
diff --git a/wave/src/main/java/org/waveprotocol/wave/client/common/util/FakeSignalEvent.java b/wave/src/main/java/org/waveprotocol/wave/client/common/util/FakeSignalEvent.java
index 9dce0aa..a3c4b37 100644
--- a/wave/src/main/java/org/waveprotocol/wave/client/common/util/FakeSignalEvent.java
+++ b/wave/src/main/java/org/waveprotocol/wave/client/common/util/FakeSignalEvent.java
@@ -20,6 +20,7 @@
 package org.waveprotocol.wave.client.common.util;
 
 import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.EventTarget;
 
 import java.util.EnumSet;
 
@@ -93,6 +94,12 @@ public class FakeSignalEvent extends SignalEventImpl {
     public void stopPropagation() {
       propagationStopped = true;
     }
+
+    @Override
+    public EventTarget getEventTarget() {
+      // TODO Auto-generated method stub
+      return null;
+    }
   }
 
   public static FakeSignalEvent createKeyPress(

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/3dc20d6a/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEvent.java
----------------------------------------------------------------------
diff --git a/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEvent.java b/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEvent.java
index 91dff61..67f6044 100644
--- a/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEvent.java
+++ b/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEvent.java
@@ -19,7 +19,6 @@
 
 package org.waveprotocol.wave.client.common.util;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.user.client.Event;
@@ -358,4 +357,9 @@ public interface SignalEvent {
    * See also {@link #stopPropagation()}.
    */
   public void preventDefault();
+
+  /**
+   * @return true if it is a DOMCharacterDataModified event
+   */
+  boolean isDOMCharacterEvent();
 }

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/3dc20d6a/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEventImpl.java
----------------------------------------------------------------------
diff --git a/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEventImpl.java b/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEventImpl.java
index 1189ccd..005b842 100644
--- a/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEventImpl.java
+++ b/wave/src/main/java/org/waveprotocol/wave/client/common/util/SignalEventImpl.java
@@ -20,6 +20,7 @@
 package org.waveprotocol.wave.client.common.util;
 
 import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.user.client.Event;
 
 import org.waveprotocol.wave.client.common.util.SignalKeyLogic.OperatingSystem;
@@ -79,7 +80,8 @@ public class SignalEventImpl implements SignalEvent {
     boolean getAltKey();
     boolean getShiftKey();
     void preventDefault();
-    void stopPropagation();
+    void stopPropagation();    
+    EventTarget getEventTarget();    
   }
 
   /**
@@ -146,6 +148,8 @@ public class SignalEventImpl implements SignalEvent {
   private static final StringSet MOUSE_BUTTONLESS_EVENTS = CollectionUtils.createStringSet();
   private static final StringSet FOCUS_EVENTS = CollectionUtils.createStringSet();
   private static final StringSet CLIPBOARD_EVENTS = CollectionUtils.createStringSet();
+  
+  private static final String DOM_CHARDATAMOD_EVENT = "DOMCharacterDataModified";
 
   /**
    * Events affected by
@@ -321,7 +325,7 @@ public class SignalEventImpl implements SignalEvent {
   }-*/;
 
   public static native String getKeyIdentifier(Event event) /*-{
-    return event.keyIdentifier
+    return event.keyIdentifier;
   }-*/;
   
   public static native String getKey(Event event) /*-{
@@ -336,10 +340,10 @@ public class SignalEventImpl implements SignalEvent {
   }
 
   /**
-   * @return The target element of the event
+   * @return The target element of the event.
    */
   public Element getTarget() {
-    return asEvent().getTarget();
+    return Element.as(nativeEvent.getEventTarget());
   }
 
   /**
@@ -670,4 +674,9 @@ public class SignalEventImpl implements SignalEvent {
       nativeEvent.stopPropagation();
     }
   }
+  
+  @Override
+  public final boolean isDOMCharacterEvent() {
+    return DOM_CHARDATAMOD_EVENT.equalsIgnoreCase(nativeEvent.getType());
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/3dc20d6a/wave/src/main/java/org/waveprotocol/wave/client/editor/event/EditorEventHandler.java
----------------------------------------------------------------------
diff --git a/wave/src/main/java/org/waveprotocol/wave/client/editor/event/EditorEventHandler.java b/wave/src/main/java/org/waveprotocol/wave/client/editor/event/EditorEventHandler.java
index 05a0e51..f32a903 100644
--- a/wave/src/main/java/org/waveprotocol/wave/client/editor/event/EditorEventHandler.java
+++ b/wave/src/main/java/org/waveprotocol/wave/client/editor/event/EditorEventHandler.java
@@ -293,7 +293,12 @@ public final class EditorEventHandler {
     } else if (event.isMutationEvent()) {
       selectionAffinityMaybeChanged = false;
       if (!editorInteractor.isExpectingMutationEvents()) {
-        if (DomHelper.isTextNode(event.getTarget())) {
+         
+        // Don't trust in DomHelper.isTextNode(event.getTarget())
+        // to detect DOM mutations in text because target property
+        // is inconsistent among browsers {@DOMImplWebkit#eventGetTarget}
+        if (event.isDOMCharacterEvent()) {
+          
           cachedSelection = editorInteractor.getSelectionPoints();
           if (cachedSelection != null) {
             if (!cachedSelection.isCollapsed()) {