Skip to content

Commit 751a15b

Browse files
committed
UI: experimental keypad to replace android keypad
1 parent 7328da4 commit 751a15b

File tree

6 files changed

+35
-27
lines changed

6 files changed

+35
-27
lines changed

src/platform/android/app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ apply plugin: 'com.android.application'
22

33
android {
44
// app can use the API features included in this API level and lower.
5-
compileSdk 34
5+
compileSdk 36
66

77
// can override some attributes in main/AndroidManifest.xml
88
defaultConfig {
99
applicationId 'net.sourceforge.smallbasic'
1010
minSdkVersion 21
11-
targetSdkVersion 34
12-
versionCode 78
13-
versionName '12.29'
11+
targetSdkVersion 36
12+
versionCode 79
13+
versionName '12.30'
1414
resourceConfigurations += ['en']
1515
}
1616

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
APP_ABI := all
22
APP_STL := c++_shared
3+
APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true

src/platform/android/jni/editor.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,17 @@ void Runtime::editSource(strlib::String loadPath, bool restoreOnExit) {
134134
redraw = false;
135135
break;
136136
case SB_KEY_F(1):
137-
widget = helpWidget;
138-
helpWidget->createKeywordIndex();
139-
helpWidget->showPopup(-4, -2);
140-
helpWidget->setFocus(true);
141-
showStatus = false;
137+
if (widget == helpWidget) {
138+
// end help mode
139+
widget = editWidget;
140+
helpWidget->hide();
141+
helpWidget->cancelMode();
142+
} else {
143+
widget = helpWidget;
144+
helpWidget->createKeywordIndex();
145+
helpWidget->showPopup(-4, -2);
146+
helpWidget->setFocus(true);
147+
}
142148
break;
143149
case SB_KEY_F(9):
144150
case SB_KEY_CTRL('r'):
@@ -148,17 +154,15 @@ void Runtime::editSource(strlib::String loadPath, bool restoreOnExit) {
148154
}
149155
break;
150156
case SB_KEY_CTRL('f'):
151-
if (widget == helpWidget && helpWidget->searchMode()) {
152-
// end searching
157+
if (widget == helpWidget) {
158+
// end help mode
153159
widget = editWidget;
154160
helpWidget->hide();
155161
helpWidget->cancelMode();
156-
showStatus = false;
157162
} else {
158163
widget = helpWidget;
159164
helpWidget->createSearch(false);
160165
showHelpLineInput(helpWidget);
161-
showStatus = true;
162166
}
163167
break;
164168
case SB_KEY_CTRL('s'):

src/ui/keypad.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,11 @@ char Key::getKey(bool useShift) const {
159159
char result;
160160
KeyCode keyCode = useShift ? _alt : _key;
161161
switch (keyCode) {
162-
case K_EXT1: result = 164; break;
163-
case K_EXT2: result = 172; break;
164-
case K_EXT3: result = 182; break;
165-
case K_EXT4: result = 222; break;
166-
case K_EXT5: result = 223; break;
162+
case K_EXT1: result = (char)164; break;
163+
case K_EXT2: result = (char)172; break;
164+
case K_EXT3: result = (char)182; break;
165+
case K_EXT4: result = (char)222; break;
166+
case K_EXT5: result = (char)223; break;
167167
default:
168168
result = keyCode;
169169
break;
@@ -280,7 +280,7 @@ void Key::onClick(const bool useShift) const {
280280
event->key = SB_KEY_F(1);
281281
break;
282282
default:
283-
event->key = getKey(useShift);
283+
event->key = (unsigned char)getKey(useShift);
284284
break;
285285
}
286286
maPushEvent(event);

src/ui/keypad.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ using namespace strlib;
1818
#if defined(_SDL)
1919
// for cursor display
2020
#define HAS_HOVER true
21-
#define PADDING 8
21+
#define PADDING 6
2222
#else
2323
#define HAS_HOVER false
2424
#define PADDING 16

src/ui/textedit.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -425,9 +425,12 @@ char EditBuffer::getChar(int pos) const {
425425
}
426426

427427
int EditBuffer::insertChars(int pos, const char *text, int num) {
428+
#if defined(_SDL)
428429
if (num == 1 && *text < 0) {
430+
// avoid spurious keyboard characters
429431
return 0;
430432
}
433+
#endif
431434
int required = _len + num + 1;
432435
if (required >= _size) {
433436
_size += (required + GROW_SIZE);
@@ -542,7 +545,7 @@ void TextEditInput::completeWord(const char *word) {
542545
int start = wordStart();
543546
int end = _state.cursor;
544547
int len = end - start;
545-
int insertLen = strlen(word) - len;
548+
size_t insertLen = strlen(word) - len;
546549
int index = end == 0 ? 0 : end - 1;
547550
bool lastUpper = isupper(_buf._buffer[index]);
548551

@@ -558,7 +561,7 @@ const char *TextEditInput::completeKeyword(int index) {
558561
const char *help = nullptr;
559562
char *selection = getWordBeforeCursor();
560563
if (selection != nullptr) {
561-
int len = strlen(selection);
564+
size_t len = strlen(selection);
562565
int count = 0;
563566
for (auto & i : keyword_help) {
564567
if (strncasecmp(selection, i.keyword, len) == 0 &&
@@ -1240,7 +1243,7 @@ void TextEditInput::calcMargin() {
12401243
void TextEditInput::changeCase() {
12411244
int start, end;
12421245
char *selection = getSelection(&start, &end);
1243-
int len = strlen(selection);
1246+
size_t len = strlen(selection);
12441247
enum { up, down, mixed } curcase = isupper(selection[0]) ? up : down;
12451248

12461249
for (int i = 1; i < len; i++) {
@@ -1330,7 +1333,7 @@ void TextEditInput::editEnter() {
13301333

13311334
// check whether the previous line was a comment
13321335
char *buf = lineText(prevLineStart);
1333-
int length = strlen(buf);
1336+
size_t length = strlen(buf);
13341337
int pos = 0;
13351338
while (buf && (buf[pos] == ' ' || buf[pos] == '\t')) {
13361339
pos++;
@@ -1498,7 +1501,7 @@ void TextEditInput::findMatchingBrace() {
14981501
int TextEditInput::getCompletions(StringList *list, int max) {
14991502
int count = 0;
15001503
char *selection = getWordBeforeCursor();
1501-
unsigned len = selection != nullptr ? strlen(selection) : 0;
1504+
size_t len = selection != nullptr ? strlen(selection) : 0;
15021505
if (len > 0) {
15031506
for (int i = 0; i < keyword_help_len && count < max; i++) {
15041507
if (strncasecmp(selection, keyword_help[i].keyword, len) == 0) {
@@ -2128,7 +2131,7 @@ void TextEditHelpWidget::createCompletionHelp() {
21282131
reset(kCompletion);
21292132

21302133
char *selection = _editor->getWordBeforeCursor();
2131-
int len = selection != nullptr ? strlen(selection) : 0;
2134+
size_t len = selection != nullptr ? strlen(selection) : 0;
21322135
if (len > 0) {
21332136
StringList words;
21342137
for (auto & i : keyword_help) {
@@ -2353,7 +2356,7 @@ void TextEditHelpWidget::reset(HelpMode mode) {
23532356
}
23542357

23552358
bool TextEditHelpWidget::selected(MAPoint2d pt, int scrollX, int scrollY, bool &redraw) {
2356-
bool result = hasFocus();
2359+
bool result = hasFocus() && FormEditInput::overlaps(pt, scrollX, scrollY);
23572360
if (result) {
23582361
dragPage(pt.y, redraw);
23592362
}

0 commit comments

Comments
 (0)