]> git.eshelyaron.com Git - emacs.git/commitdiff
Update Android port
authorPo Lu <luangruo@yahoo.com>
Mon, 6 Feb 2023 14:00:08 +0000 (22:00 +0800)
committerPo Lu <luangruo@yahoo.com>
Mon, 6 Feb 2023 14:00:08 +0000 (22:00 +0800)
* java/AndroidManifest.xml.in: Prevent the Emacs activity from
being overlayed by the emacsclient wrapper.
* java/org/gnu/emacs/EmacsOpenActivity.java (run): Likewise.
(onCreate): Set an appropriate theme on ICS and up.

* java/org/gnu/emacs/EmacsWindow.java (onTouchEvent): Handle
ACTION_CANCEL correctly.

java/AndroidManifest.xml.in
java/org/gnu/emacs/EmacsOpenActivity.java
java/org/gnu/emacs/EmacsWindow.java

index 923c5a005d526a7db3b6e2d14be3e4110c19a8fa..3c9e30713b6b2c54aeeb17ac9591743fc7af24a3 100644 (file)
@@ -72,7 +72,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>. -->
               android:extractNativeLibs="true">
 
     <activity android:name="org.gnu.emacs.EmacsActivity"
-             android:launchMode="singleTop"
+             android:launchMode="singleInstance"
              android:windowSoftInputMode="adjustResize"
              android:exported="true"
              android:configChanges="orientation|screenSize|screenLayout|keyboardHidden">
@@ -84,6 +84,8 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>. -->
     </activity>
 
     <activity android:name="org.gnu.emacs.EmacsOpenActivity"
+             android:taskAffinity="open.dialog"
+             android:excludeFromRecents="true"
              android:exported="true">
 
       <!-- Allow Emacs to open all kinds of files known to Android.  -->
@@ -137,6 +139,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>. -->
        <data android:mimeType="image/t38"/>
        <data android:mimeType="image/tiff"/>
        <data android:mimeType="image/tiff-fx"/>
+       <data android:mimeType="image/xpm"/>
        <data android:mimeType="text/*"/>
         <data android:mimeType="application/*xml"/>
         <data android:mimeType="application/atom+xml"/>
index 268a9abd7b1f5a4b6fd1ea4caeb82d2cfdbd423b..e987e067a73f6ff90e52f5131b8c3dad44a5db63 100644 (file)
@@ -184,7 +184,9 @@ public class EmacsOpenActivity extends Activity
 
          intent = new Intent (EmacsOpenActivity.this,
                               EmacsActivity.class);
-         intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
+
+         /* This means only an existing frame will be displayed.  */
+         intent.addFlags (Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
          startActivity (intent);
 
          EmacsOpenActivity.this.finish ();
@@ -285,6 +287,11 @@ public class EmacsOpenActivity extends Activity
        return;
       }
 
+    /* Set an appropriate theme.  */
+
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
+      setTheme (android.R.style.Theme_DeviceDefault);
+
     /* Now see if the action specified is supported by Emacs.  */
 
     if (action.equals ("android.intent.action.VIEW")
index 5c2b77b0125c3774abcca13cb4a7b784c1ef434e..e921b972c2cc1acaa965ad2225346fcf2f90492b 100644 (file)
@@ -794,7 +794,10 @@ public class EmacsWindow extends EmacsHandleObject
 
       case MotionEvent.ACTION_UP:
       case MotionEvent.ACTION_POINTER_UP:
-       /* Touch up event.  */
+      case MotionEvent.ACTION_CANCEL:
+       /* Touch up event.  Android documentation says ACTION_CANCEL
+          should be treated as more or less equivalent to ACTION_UP,
+          so that is what is done here.  */
        EmacsNative.sendTouchUp (this.handle, (int) event.getX (index),
                                 (int) event.getY (index),
                                 event.getEventTime (), pointerID);