Commit Graph

18 Commits

Author SHA1 Message Date
Julian Winkler
ec45faaf87 View.dispatchTouchEvent(): implement ACTION_CANCEL for sythetic events 2025-04-19 15:32:27 +02:00
Mis012
4d12ad5c90 View: add basic implemntation of dispatchTouchEvent
Some Views block all events going to their descendants, and
then synthesize new events themselves. Gtk doesn't allow event
synthesization, which makes this quite annoying to deal with.
This initial implementation definiely has some problems,
for example it seems to cause infinite loops in some cases,
however it surprisingly works well enough.
2025-03-26 20:06:15 +01:00
Julian Winkler
d0952101a6 implement some Canvas methods needed for composeUI 2024-12-01 14:15:00 +00:00
Julian Winkler
c5e0f8a7fd View.draw(): draw background, content, children in same order as AOSP 2024-05-27 16:37:49 +00:00
Julian Winkler
1b03fa6e1a merge View and ViewGroup constructor
Introduce empy JavaWidget to replace confusing usage of GtkBox and GtkDrawingArea.
gtk_widget_set_name() is called with the Java class name
2023-12-29 12:16:10 +01:00
Julian Winkler
757d689689 unify View construction and measurement
No longer allow constructing Views without Context.
Lets have only one onMeasure() method to unify behaviour
2023-12-29 11:40:52 +01:00
Julian Winkler
8b6de0e83a move AndroidLayout class to own file 2023-11-01 17:55:02 +01:00
Julian Winkler
3de842b1d8 enable onTouchEvent for ViewGroups and add some stubs 2023-11-01 17:54:59 +01:00
Mis012
0fc90e39c7 api-impl-jni/views/android_view_ViewGroup.c: set GTK_OVERFLOW_HIDDEN by default 2023-10-31 13:39:39 +01:00
Julian Winkler
3bdffe7ce9 View: prevent redundant measuring for performance reasons
No need to remeasure or relayout when nothing has changed
2023-10-29 15:28:06 +01:00
Julian Winkler
0461834be0 ViewGroup: adjust scroll velocity for touchpads 2023-09-01 16:05:26 +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
fb1a07967e copy android.widget.Scroller from AOSP and implement missing scroll APIs
This is needed to make ViewPager functional
2023-09-01 12:13:24 +02:00
Julian Winkler
c4b7bdc63d ViewGroup: handle scroll events 2023-08-23 12:39:55 +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
36b6132324 fix reference counting for GtkWidgets created from java
GtkWidgets extend GInitiallyUnowned and are automatically freed when
removing from parent widget. We need to add an extra reference, to make
sure the object keeps alive as long as the java widget has a reference
to it
2023-08-23 11:47:05 +02:00
Julian Winkler
4d90002ec6 Simplify native interface of widget implementations
Makes it easier to overwrite behavior in subclasses. Have a fallback
implementation for ViewGroup.
Save some _GET_LONG_FIELD / _SET_LONG_FIELD calls by directly passing
the native pointers to and from native methods.
2023-08-22 15:53:09 +02:00
Mis012
449090143e refactor source tree organization, switch to meson 2022-10-09 22:59:16 +02:00