Skip to content

Commit ccc02b9

Browse files
committed
long press backspace
1 parent 41b2f19 commit ccc02b9

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
needs: [lint, data]
4545
runs-on: macos-15
4646
env:
47-
MOZC_SHA: 88b1dcae03a0a16192586dca3da157dad64f0e2f
47+
MOZC_SHA: ce1fb7fe48efb1d85f8e54eff1b05e9e692bf0d4
4848
strategy:
4949
fail-fast: false
5050
matrix:

engines/fcitx5-mozc

uipanel/Key.swift

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,21 @@ struct BackspaceView: View {
111111
var vMargin: CGFloat? = nil
112112
var radius: CGFloat? = nil
113113

114+
@State private var deleteTimer: Timer? = nil
115+
116+
func startDelete() {
117+
stopDelete()
118+
deleteTimer = Timer.scheduledTimer(withTimeInterval: 0.08, repeats: true) { _ in
119+
virtualKeyboardView.resetLayerIfNotLocked()
120+
client.keyPressed("", "Backspace")
121+
}
122+
}
123+
124+
func stopDelete() {
125+
deleteTimer?.invalidate()
126+
deleteTimer = nil
127+
}
128+
114129
var body: some View {
115130
Image(systemName: "delete.left")
116131
.resizable()
@@ -130,15 +145,24 @@ struct BackspaceView: View {
130145
virtualKeyboardView.resetLayerIfNotLocked()
131146
client.keyPressed("", "Backspace")
132147
},
148+
onLongPress: {
149+
startDelete()
150+
},
133151
onSlide: { step in
134152
virtualKeyboardView.slideBackspace(step)
153+
},
154+
onRelease: {
155+
stopDelete()
135156
}
136157
),
137158
pressedView: Image(systemName: "delete.left.fill")
138159
.resizable()
139160
.aspectRatio(contentMode: .fit)
140161
.frame(height: height * 0.4)
141162
)
163+
.onDisappear {
164+
stopDelete()
165+
}
142166
}
143167
}
144168

uipanel/KeyModifier.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ struct GestureAction {
66
var onLongPress: (() -> Void)? = nil
77
var onSwipe: ((SwipeDirection) -> Void)? = nil
88
var onSlide: ((Int) -> Void)? = nil
9+
var onRelease: (() -> Void)? = nil
910
}
1011

1112
enum SwipeDirection {
@@ -151,6 +152,7 @@ struct KeyModifier: ViewModifier {
151152
.onEnded { value in
152153
clearBubble()
153154
defer {
155+
action.onRelease?()
154156
isPressed = false
155157
startLocation = nil
156158
lastLocation = nil

0 commit comments

Comments
 (0)