abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--srcs/juloo.keyboard2/Config.java10
-rw-r--r--srcs/juloo.keyboard2/Keyboard2View.java14
-rw-r--r--srcs/juloo.keyboard2/Theme.java13
3 files changed, 21 insertions, 16 deletions
diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java
index 9f27e7e..d746ccb 100644
--- a/srcs/juloo.keyboard2/Config.java
+++ b/srcs/juloo.keyboard2/Config.java
@@ -42,7 +42,8 @@ public final class Config
public long longPressInterval;
public boolean keyrepeat_enabled;
public float margin_bottom;
- public float keyHeight;
+ public int keyboardHeightPercent;
+ public int screenHeightPixels;
public float horizontal_margin;
public float key_vertical_margin;
public float key_horizontal_margin;
@@ -110,9 +111,6 @@ public final class Config
orientation_landscape = res.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
foldable_unfolded = foldableUnfolded;
- // The height of the keyboard is relative to the height of the screen.
- // This is the height of the keyboard if it have 4 rows.
- int keyboardHeightPercent;
float characterSizeScale = 1.f;
String show_numpad_s = _prefs.getString("show_numpad", "never");
show_numpad = "always".equals(show_numpad_s);
@@ -159,9 +157,7 @@ public final class Config
borderConfig = _prefs.getBoolean("border_config", false);
customBorderRadius = _prefs.getInt("custom_border_radius", 0) / 100.f;
customBorderLineWidth = get_dip_pref(dm, "custom_border_line_width", 0);
- // Do not substract key_vertical_margin from keyHeight because this is done
- // during rendering.
- keyHeight = dm.heightPixels * keyboardHeightPercent / 100 / 4;
+ screenHeightPixels = dm.heightPixels;
horizontal_margin =
get_dip_pref_oriented(dm, "horizontal_margin", 3, 28);
double_tap_lock_shift = _prefs.getBoolean("lock_double_tap", false);
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index 684e42a..23d2a0a 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -229,7 +229,7 @@ public class Keyboard2View extends View
return null;
for (KeyboardData.Row row : _keyboard.rows)
{
- y += (row.shift + row.height) * _config.keyHeight;
+ y += (row.shift + row.height) * _tc.row_height;
if (ty < y)
return row;
}
@@ -309,19 +309,19 @@ public class Keyboard2View extends View
_marginRight = Math.max(_config.horizontal_margin, insets_right);
_marginBottom = _config.margin_bottom + insets_bottom;
_keyWidth = (width - _marginLeft - _marginRight) / _keyboard.keysWidth;
- _tc = new Theme.Computed(_theme, _config, _keyWidth);
+ _tc = new Theme.Computed(_theme, _config, _keyWidth, _keyboard);
// Compute the size of labels based on the width or the height of keys. The
// margin around keys is taken into account. Keys normal aspect ratio is
// assumed to be 3/2. It's generally more, the width computation is useful
// when the keyboard is unusually high.
float labelBaseSize = Math.min(
- _config.keyHeight - _tc.vertical_margin,
+ _tc.row_height - _tc.vertical_margin,
_keyWidth * 3/2 - _tc.horizontal_margin
) * _config.characterSize;
_mainLabelSize = labelBaseSize * _config.labelTextSize;
_subLabelSize = labelBaseSize * _config.sublabelTextSize;
int height =
- (int)(_config.keyHeight * _keyboard.keysHeight
+ (int)(_tc.row_height * _keyboard.keysHeight
+ _config.marginTop + _marginBottom);
setMeasuredDimension(width, height);
}
@@ -364,9 +364,9 @@ public class Keyboard2View extends View
float y = _tc.margin_top;
for (KeyboardData.Row row : _keyboard.rows)
{
- y += row.shift * _config.keyHeight;
+ y += row.shift * _tc.row_height;
float x = _marginLeft + _tc.margin_left;
- float keyH = row.height * _config.keyHeight - _tc.vertical_margin;
+ float keyH = row.height * _tc.row_height - _tc.vertical_margin;
for (KeyboardData.Key k : row.keys)
{
x += k.shift * _keyWidth;
@@ -384,7 +384,7 @@ public class Keyboard2View extends View
drawIndication(canvas, k, x, y, keyW, keyH, _tc);
x += _keyWidth * k.width;
}
- y += row.height * _config.keyHeight;
+ y += row.height * _tc.row_height;
}
}
diff --git a/srcs/juloo.keyboard2/Theme.java b/srcs/juloo.keyboard2/Theme.java
index c5f3e20..9af0d01 100644
--- a/srcs/juloo.keyboard2/Theme.java
+++ b/srcs/juloo.keyboard2/Theme.java
@@ -94,14 +94,23 @@ public class Theme
public final float horizontal_margin;
public final float margin_top;
public final float margin_left;
+ public final float row_height;
public final Paint indication_paint;
public final Key key;
public final Key key_activated;
- public Computed(Theme theme, Config config, float keyWidth)
+ public Computed(Theme theme, Config config, float keyWidth, KeyboardData layout)
{
- vertical_margin = config.key_vertical_margin * config.keyHeight;
+ // Rows height is proportional to the keyboard height, meaning it doesn't
+ // change for layouts with more or less rows. 3.95 is the usual height of
+ // a layout in KeyboardData unit. The keyboard will be higher if the
+ // layout has more rows and smaller if it has less because rows stay the
+ // same height.
+ row_height = Math.min(
+ config.screenHeightPixels * config.keyboardHeightPercent / 100 / 3.95f,
+ config.screenHeightPixels / layout.keysHeight);
+ vertical_margin = config.key_vertical_margin * row_height;
horizontal_margin = config.key_horizontal_margin * keyWidth;
// Add half of the key margin on the left and on the top as it's also
// added on the right and on the bottom of every keys.