Skip to content

Commit 4fa29f7

Browse files
committed
Feat: disable onyx-sdk-pen overlay on eraser
This is a bit janky, and sometimes fails to disable the overlay if user is fast enough. However, in situations where it does correctly work, it's a nice QoL, and when it doesn't, nothing actually breaks
1 parent 7636a45 commit 4fa29f7

File tree

1 file changed

+41
-15
lines changed
  • packages/onyxsdk_pen/android/src/main/kotlin/com/example/onyxsdk_pen

1 file changed

+41
-15
lines changed

packages/onyxsdk_pen/android/src/main/kotlin/com/example/onyxsdk_pen/OnyxsdkPenArea.kt

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ internal class OnyxsdkPenArea(context: Context, messenger: BinaryMessenger, id:
3030
Pen(1),
3131
Brush(2),
3232
Pencil(3),
33-
Marker(4)
33+
Marker(4),
34+
Disabled(5)
3435
}
3536

3637
private val channel: MethodChannel = MethodChannel(messenger, "onyxsdk_pen_area")
@@ -101,11 +102,28 @@ internal class OnyxsdkPenArea(context: Context, messenger: BinaryMessenger, id:
101102
2 -> StrokeStyle.Brush
102103
3 -> StrokeStyle.Pencil
103104
4 -> StrokeStyle.Marker
105+
5 -> StrokeStyle.Disabled
104106
else -> StrokeStyle.Pen
105107
}
106-
touchHelper.setStrokeStyle(strokeStyleToOnyx(strokeStyle))
107-
touchHelper.setStrokeWidth(strokeWidth)
108-
touchHelper.setStrokeColor(strokeColor)
108+
109+
if (strokeStyle != StrokeStyle.Disabled) {
110+
touchHelper.setStrokeStyle(strokeStyleToOnyx(strokeStyle))
111+
touchHelper.setStrokeWidth(strokeWidth)
112+
touchHelper.setStrokeColor(strokeColor)
113+
}
114+
115+
// I've done at least 10 test builds with different variations of banging
116+
// rocks together to make this abhorrent eldritch horror to actually start
117+
// behaving and it still sometimes draws if style is disabled and stuff is done
118+
// fast enough. Let this be a note for future endeavoring perfectionists.
119+
// This specific combination seems to work best and still sometimes fails.
120+
// My wild guess is ONYX Note app is dismantling the whole overlay if eraser
121+
// is selected or using some hidden APIs. Or I was banging the wrong types of rocks...
122+
// TLDR I gave up here. Works good enough, certainly better than just drawing lines.
123+
// BTW, doing forceRefresh() and/or setDraw(...) here breaks the overlay altogether ;(
124+
125+
touchHelper.setRawDrawingEnabled(strokeStyle != StrokeStyle.Disabled)
126+
EpdController.invalidate(view, UpdateMode.GC)
109127
}
110128

111129

@@ -145,9 +163,7 @@ internal class OnyxsdkPenArea(context: Context, messenger: BinaryMessenger, id:
145163
refreshTimerTask?.cancel()
146164
refreshTimerTask = object : TimerTask() {
147165
override fun run() {
148-
touchHelper.setRawDrawingEnabled(false)
149-
EpdController.invalidate(view, UpdateMode.GC);
150-
touchHelper.setRawDrawingEnabled(true)
166+
forceRefresh()
151167
}
152168
}
153169
Timer().schedule(refreshTimerTask, refreshDelayMs)
@@ -197,13 +213,30 @@ internal class OnyxsdkPenArea(context: Context, messenger: BinaryMessenger, id:
197213
StrokeStyle.Brush -> TouchHelper.STROKE_STYLE_NEO_BRUSH
198214
StrokeStyle.Pencil -> TouchHelper.STROKE_STYLE_CHARCOAL
199215
StrokeStyle.Marker -> TouchHelper.STROKE_STYLE_MARKER
216+
StrokeStyle.Disabled -> TouchHelper.STROKE_STYLE_PENCIL
217+
}
218+
}
219+
220+
fun setDraw(enabled: Boolean) {
221+
if (enabled) {
222+
touchHelper.openRawDrawing()
223+
touchHelper.setRawDrawingEnabled(true)
224+
touchHelper.setRawDrawingRenderEnabled(true)
225+
} else {
226+
touchHelper.closeRawDrawing()
200227
}
201228
}
202229

203230
fun drawPreview() {
204231
currentStroke.clear()
205232
}
206233

234+
fun forceRefresh() {
235+
touchHelper.setRawDrawingEnabled(false)
236+
EpdController.invalidate(view, UpdateMode.GC)
237+
touchHelper.setRawDrawingEnabled(true)
238+
}
239+
207240
init {
208241
channel.setMethodCallHandler(this)
209242
view.addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
@@ -232,14 +265,7 @@ internal class OnyxsdkPenArea(context: Context, messenger: BinaryMessenger, id:
232265
updateStroke(params)
233266
result.success(null)
234267
} else if (call.method == "setDraw") {
235-
if (call.arguments<Boolean>()!!) {
236-
touchHelper.openRawDrawing()
237-
touchHelper.setRawDrawingEnabled(true)
238-
touchHelper.setRawDrawingRenderEnabled(true)
239-
} else {
240-
touchHelper.closeRawDrawing()
241-
}
242-
268+
setDraw(call.arguments<Boolean>()!!)
243269
result.success(null)
244270
} else {
245271
result.notImplemented()

0 commit comments

Comments
 (0)