mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-02 18:21:19 -08:00
Update Android port
* INSTALL.android: Document support for gnutls and libgmp. * build-aux/ndk-build-helper-1.mk (NDK_SO_NAMES, NDK_INCLUDES) (SYSTEM_LIBRARIES): * build-aux/ndk-build-helper-2.mk: Recursively resolve and add shared library dependencies; even those of static libraries. * build-aux/ndk-module-extract.awk: Fix makefile_imports code. * configure.ac (ANDROID_SDK_18_OR_EARLIER, XCONFIGURE) (LIBGMP_CFLAGS): Enable GMP and gnutls on Android. * cross/ndk-build/Makefile.in (LOCAL_EXPORT_C_INCLUDES): * cross/ndk-build/ndk-build-shared-library.mk: ($(call objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error Unsupported suffix)::($(LOCAL_MODULE_FILENAME)): * cross/ndk-build/ndk-build-static-library.mk: ($(call objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error Unsupported suffix): * cross/ndk-build/ndk-clear-vars.mk: * cross/ndk-build/ndk-resolve.mk (NDK_SYSTEM_LIBRARIES): (NDK_LOCAL_EXPORT_C_INCLUDES_$(LOCAL_MODULE)): (NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)): Implement ``LOCAL_ASM_RULE'' and ``LOCAL_C_ADDITIONAL_FLAGS'' extensions for libgmp. * doc/emacs/input.texi (Touchscreens): Document how to horizontally scroll. * java/org/gnu/emacs/EmacsActivity.java (attachWindow): Give the view focus again if necessary. (onPause): Call right super function. * java/org/gnu/emacs/EmacsPreferencesActivity.java (onClick): Clear dumpFileName lest Emacs try to load a nonexistent dump file. * java/org/gnu/emacs/EmacsView.java (onDetachedFromWindow) (onAttachedToWindow): Call super functions. (onCreateInputConnection): Make sure the IME never obscures Emacs. * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, onKeyDown) (onKeyUp): Improve tracking of quit keys. * lisp/isearch.el (isearch-mode): Bring up the onscreen keyboard. * lisp/touch-screen.el (touch-screen-current-tool): Add three fields. (touch-screen-handle-scroll): Allow hscrolling as well. (touch-screen-handle-touch): Add additional fields to `touch-screen-current-tool'. * src/Makefile.in (LIBGMP_CFLAGS, EMACS_CFLAGS): Add new variable. * src/android.c (android_run_select_thread): (android_write_event): Use pthread_cond_broadcast because pthread_cond_signal does nothing on some Android versions/devices?
This commit is contained in:
parent
65dddd7c99
commit
e3b50ec8ec
19 changed files with 243 additions and 46 deletions
|
|
@ -134,6 +134,10 @@ public class EmacsActivity extends Activity
|
|||
layout.addView (window.view);
|
||||
child.setConsumer (this);
|
||||
|
||||
/* If the window isn't no-focus-on-map, focus its view. */
|
||||
if (!child.getDontFocusOnMap ())
|
||||
window.view.requestFocus ();
|
||||
|
||||
/* If the activity is iconified, send that to the window. */
|
||||
if (isPaused)
|
||||
window.noticeIconified ();
|
||||
|
|
@ -233,7 +237,7 @@ public class EmacsActivity extends Activity
|
|||
isPaused = true;
|
||||
|
||||
EmacsWindowAttachmentManager.MANAGER.noticeIconified (this);
|
||||
super.onResume ();
|
||||
super.onPause ();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -116,6 +116,11 @@ public class EmacsPreferencesActivity extends Activity
|
|||
|
||||
if (file.exists ())
|
||||
file.delete ();
|
||||
|
||||
/* Make sure to clear EmacsApplication.dumpFileName, or
|
||||
starting Emacs without restarting this program will
|
||||
make Emacs try to load a nonexistent dump file. */
|
||||
EmacsApplication.dumpFileName = null;
|
||||
}
|
||||
});
|
||||
layout.addView (textView);
|
||||
|
|
|
|||
|
|
@ -22,12 +22,16 @@ package org.gnu.emacs;
|
|||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
|
||||
import android.text.InputType;
|
||||
|
||||
import android.view.ContextMenu;
|
||||
import android.view.View;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputConnection;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
|
@ -566,6 +570,8 @@ public class EmacsView extends ViewGroup
|
|||
/* Collect the bitmap storage; it could be large. */
|
||||
Runtime.getRuntime ().gc ();
|
||||
}
|
||||
|
||||
super.onDetachedFromWindow ();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -581,6 +587,8 @@ public class EmacsView extends ViewGroup
|
|||
/* Now expose the view contents again. */
|
||||
EmacsNative.sendExpose (this.window.handle, 0, 0,
|
||||
measuredWidth, measuredHeight);
|
||||
|
||||
super.onAttachedToWindow ();
|
||||
}
|
||||
|
||||
public void
|
||||
|
|
@ -615,4 +623,17 @@ public class EmacsView extends ViewGroup
|
|||
drawingFinished = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputConnection
|
||||
onCreateInputConnection (EditorInfo info)
|
||||
{
|
||||
/* Make sure the input method never displays a full screen input
|
||||
box that obscures Emacs. */
|
||||
info.imeOptions = EditorInfo.IME_FLAG_NO_FULLSCREEN;
|
||||
|
||||
/* But don't return an InputConnection, in order to force the on
|
||||
screen keyboard to work correctly. */
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -124,9 +124,9 @@ public class EmacsWindow extends EmacsHandleObject
|
|||
there is no such window manager. */
|
||||
private WindowManager windowManager;
|
||||
|
||||
/* The time of the last KEYCODE_VOLUME_DOWN press. This is used to
|
||||
quit Emacs. */
|
||||
private long lastVolumeButtonPress;
|
||||
/* The time of the last KEYCODE_VOLUME_DOWN release. This is used
|
||||
to quit Emacs. */
|
||||
private long lastVolumeButtonRelease;
|
||||
|
||||
public
|
||||
EmacsWindow (short handle, final EmacsWindow parent, int x, int y,
|
||||
|
|
@ -517,7 +517,6 @@ public class EmacsWindow extends EmacsHandleObject
|
|||
onKeyDown (int keyCode, KeyEvent event)
|
||||
{
|
||||
int state, state_1;
|
||||
long time;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
|
||||
state = event.getModifiers ();
|
||||
|
|
@ -549,26 +548,13 @@ public class EmacsWindow extends EmacsHandleObject
|
|||
state, keyCode,
|
||||
event.getUnicodeChar (state_1));
|
||||
lastModifiers = state;
|
||||
|
||||
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
|
||||
{
|
||||
/* Check if this volume down press should quit Emacs.
|
||||
Most Android devices have no physical keyboard, so it
|
||||
is unreasonably hard to press C-g. */
|
||||
|
||||
time = event.getEventTime ();
|
||||
|
||||
if (lastVolumeButtonPress - time < 350)
|
||||
EmacsNative.quit ();
|
||||
|
||||
lastVolumeButtonPress = time;
|
||||
}
|
||||
}
|
||||
|
||||
public void
|
||||
onKeyUp (int keyCode, KeyEvent event)
|
||||
{
|
||||
int state, state_1;
|
||||
long time;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
|
||||
state = event.getModifiers ();
|
||||
|
|
@ -600,6 +586,20 @@ public class EmacsWindow extends EmacsHandleObject
|
|||
state, keyCode,
|
||||
event.getUnicodeChar (state_1));
|
||||
lastModifiers = state;
|
||||
|
||||
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
|
||||
{
|
||||
/* Check if this volume down press should quit Emacs.
|
||||
Most Android devices have no physical keyboard, so it
|
||||
is unreasonably hard to press C-g. */
|
||||
|
||||
time = event.getEventTime ();
|
||||
|
||||
if (time - lastVolumeButtonRelease < 350)
|
||||
EmacsNative.quit ();
|
||||
|
||||
lastVolumeButtonRelease = time;
|
||||
}
|
||||
}
|
||||
|
||||
public void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue