Commit Graph

43 Commits

Author SHA1 Message Date
Julian Winkler
4bce3544dd WrapperWidget: handle View.computeScroll()
Currently the scrolling is purely visual.
2023-11-02 23:30:21 +01:00
Julian Winkler
0a8b8a3874 use AndroidLayout class also in View implementation
drop the onMeasure hack from WrapperWidget
2023-11-02 08:20:19 +01:00
Mis012
065fd96308 api-impl-jni: make invalidate() work inside the draw callback
this lets us remove the tick callback, and only call onDraw
when it's actually necessary
2023-10-31 23:14:52 +01:00
Julian Winkler
e23516ee43 fix invalid cast warning when calling setTextColor() on EditText
the implementation works fine for all kind of GtkWidgets no need to cast
to GtkLabel class
2023-10-29 15:28:06 +01:00
Julian Winkler
a2381f4721 fix compiler warnings in WrapperWidget and View 2023-10-29 15:23:11 +01:00
Mis012
9ef2151c5e GLSurfaceView: remove old implementation, import the one from AOSP
Now that we have a reasonably well working SurfaceView implementation,
it is actually cleaner to just implement GLSurfaceView the way AOSP
does. In fact, their code doesn't have any weird dependencies, and
can mostly be used as-is.

The AOSP code is pure Java, which means we had to implement some
EGL wrappers.

This change fixes issues with Wayland (it only ever worked because
the pbuffers were allocated using an XWayland EGLDisplay), and
with resizing (which we simply didn't support), all while getting
rid of quite some (arguably not very readable) LoC.
2023-10-20 20:54:37 +02:00
Mis012
4a0755c6e0 api-impl{-jni}: make view.onTouchEvent work, misc stuff to make input work for Unity games
onTouchEvent was previously incorrectly handled in GLSurfaceView; move it
to View so that it works properly with any of it's descendants.

This is done by reusing the existing setOnTouchListener implementation
and changing it to use GtkEventControllerLegacy which provides motion
events.

Technically some of the code is in WrapperWidget.c since every widget
calls wrapper_widget_set_jobject and we already have related code
there.
2023-10-17 21:33:59 +02:00
Mis012
bf8f11d123 api-ipml/GLSurfaceView: fix indentation/newlines, fix compilation when DEBUG_GLAREA is defined 2023-10-09 20:10:29 +02:00
Mis012
4628cfc66d /api-impl-jni: remove remains of experimental ninepatch implementation, will use skia 2023-09-16 16:30:14 +02:00
Mis012
897a1e68a4 TextView: implement setTextColor
also uncomment Resources.getCachedColorStateList
2023-09-12 13:37:41 +02:00
Mis012
1e47824a79 src/api-impl: use skia instead of cairo
Using the C API provided by SkiaSharp's skia fork instead of using cairo
significantly improves performance. The API is also closer to the android
Canvas API, which makes the implementation more straightforward.
2023-09-12 13:37:41 +02:00
Julian Winkler
255eed3e59 setLayoutParams(): better match Androids behaviour
View.setGravity() specifies gravity of children, not of the view itself
LayoutParams.weight > 0 should cause expansion of widget
2023-09-08 20:10:45 +02:00
Julian Winkler
a27cb27638 ScrollView: use GtkScrolledWindow for implementation 2023-09-08 18:31:02 +02:00
Julian Winkler
3b6e4dc217 Always use addView() and removeView() implementation from ViewGroup
This makes sure, that the index argument is handled correctly everywhere
2023-09-01 16:05:26 +02:00
Julian Winkler
a35879c633 RelativeLayout: copy AOSP implementation
As we already support custom ViewGroups, there is no need to reimplement
this highly complex class.
2023-09-01 16:05:26 +02:00
Julian Winkler
30b990f60a EditText: implement addTextChangedListener() 2023-09-01 16:05:26 +02:00
Julian Winkler
071538de02 FrameLayout: add missing removeView JNI function 2023-09-01 16:05:26 +02:00
Julian Winkler
6c2a3adae6 LinearLayout: default to horizontal orientation 2023-09-01 12:46:02 +02:00
Julian Winkler
295d9dfda3 LinearLayout: handle overwritten performClick() method
This is needed to make TabLayout functional
2023-09-01 12:19:45 +02:00
Julian Winkler
b861c86f0d FrameLayout: fix inserting child at last index 2023-08-23 14:52:56 +02:00
Julian Winkler
c4b7bdc63d ViewGroup: handle scroll events 2023-08-23 12:39:55 +02:00
Julian Winkler
960930a348 Add some stubs needed by android material library 2023-08-23 12:39:49 +02:00
Julian Winkler
ca975a0e7c add support for ViewGroups with custom onLayout()
A custom GtkLayoutManager is set to these objects, which calls into the
java handlers when measure or layout is requested.

Androids onMeasure method is quite different from GTKs measure method,
because Android already defines the final size during onMeasure.
Therefore, we call onMeasure from GTKs allocate callback instead of the
measure callback.
2023-08-23 12:39:10 +02:00
Julian Winkler
4434de4a58 implement android.widget.EditText using GtkEntry 2023-08-23 11:47:05 +02:00
Julian Winkler
f9a85017c1 implement android.widget.ImageButton using GtkButton 2023-08-23 11:47:05 +02:00