aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/TerminalView.java
diff options
context:
space:
mode:
authorRyan Hansberry <rhansby@gmail.com>2015-10-06 11:00:34 -0700
committerRyan Hansberry <rhansby@gmail.com>2015-10-07 10:28:29 -0700
commit891444105f29cb5fdaff2ab1f7e225362760541c (patch)
tree471f97c6670b06bc8a5b298e03f585aca8e05135 /app/src/main/java/org/connectbot/TerminalView.java
parent078b44c59e22fa6b14548dcdd1dc5694a57cc1c7 (diff)
downloadconnectbot-891444105f29cb5fdaff2ab1f7e225362760541c.tar.gz
connectbot-891444105f29cb5fdaff2ab1f7e225362760541c.tar.bz2
connectbot-891444105f29cb5fdaff2ab1f7e225362760541c.zip
Make TextView lineHeight calculation much simpler. Also move font change work to UI thread.
Diffstat (limited to 'app/src/main/java/org/connectbot/TerminalView.java')
-rw-r--r--app/src/main/java/org/connectbot/TerminalView.java36
1 files changed, 13 insertions, 23 deletions
diff --git a/app/src/main/java/org/connectbot/TerminalView.java b/app/src/main/java/org/connectbot/TerminalView.java
index 0afa969..cb89b62 100644
--- a/app/src/main/java/org/connectbot/TerminalView.java
+++ b/app/src/main/java/org/connectbot/TerminalView.java
@@ -29,6 +29,7 @@ import org.connectbot.util.TerminalViewPager;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
+import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -46,7 +47,6 @@ import android.os.AsyncTask;
import android.os.Build;
import android.support.v4.view.MotionEventCompat;
import android.text.ClipboardManager;
-import android.util.Log;
import android.view.ActionMode;
import android.view.GestureDetector;
import android.view.InputDevice;
@@ -461,31 +461,21 @@ public class TerminalView extends TextView implements FontSizeChangedListener {
scaleCursors();
}
- public void onFontSizeChanged(float size) {
+ public void onFontSizeChanged(final float size) {
scaleCursors();
- setTextSize(size);
- int iterationGuard = 100;
- int heightDifference = 100;
- float lineSpacingMultiplier = 1.0f;
-
- while (Math.abs(heightDifference) > 0) {
- if (heightDifference > 0) {
- lineSpacingMultiplier += 0.01f;
- } else {
- lineSpacingMultiplier -= 0.01f;
- }
-
- setLineSpacing(0.0f, lineSpacingMultiplier);
- heightDifference = bridge.charHeight - getLineHeight();
-
- iterationGuard--;
- if (iterationGuard < 0) {
- break;
+ ((Activity) context).runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ setTextSize(size);
+
+ // For the TextView to line up with the bitmap text, lineHeight must be equal to
+ // the bridge's charHeight. See TextView.getLineHeight(), which has been reversed to
+ // derive lineSpacingMultiplier.
+ float lineSpacingMultiplier = (float) bridge.charHeight / getPaint().getFontMetricsInt(null);
+ setLineSpacing(0.0f, lineSpacingMultiplier);
}
- }
-
- copyBufferToText();
+ });
}
private void scaleCursors() {