Commit Graph

51 Commits

Author SHA1 Message Date
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
1a039e5e51 add missing APIs related to scrolling 2023-11-12 12:16:23 +01:00
Julian Winkler
e11d9ec6b6 set parent before calling setLayoutParams()
Allows the parent gravity to get handled correctly
2023-11-12 12:16:23 +01:00
Julian Winkler
36d7a1cc44 support layout margins
This makes the menu in Gravity Defied not get behind the keyboard.
Also makes the TabLayout in NewPipe not get behing the titlebar.
2023-11-12 12:16:23 +01:00
Julian Winkler
d025fd3ce3 FrameLayout: replace with AOSPs implementation
There are many Widgets extending FrameLayout and adding custom behaviour
on top. For example NavigationView. This didn't realy work with our
custom implementation
2023-11-08 22:44:39 +01:00
Julian Winkler
3de842b1d8 enable onTouchEvent for ViewGroups and add some stubs 2023-11-01 17:54:59 +01:00
Julian Winkler
520d153c55 call View.onAttachedToWindow() method 2023-10-14 18:29:33 +02:00
Julian Winkler
c830abc5f3 add more API stubs for NewPipe 2023-10-14 18:29:33 +02:00
Julian Winkler
f5fc993484 add APIs needed for non legacy NewPipe version 2023-10-14 18:29:33 +02:00
Julian Winkler
37d9b13470 View.onMeasure: handle MEASURE_SPEC_AT_MOST properly
We decide between simple widgets which handles MEASURE_SPEC_AT_MOST the same way as
MEASURE_SPEC_EXACTLY, and complex widgets which handles MEASURE_SPEC_AT_MOST by measuring the content
2023-10-14 10:01:01 +00: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
9ad77d5b62 ViewGroup: make sure all child views have valid LayoutParams 2023-09-01 16:05:26 +02:00
Julian Winkler
97f8c2ed0f Add some missing APIs.
android.widget.Filter and android.webkit.MimeTypeMap are copied from
AOSP. Other new classes are only stub implementations.
2023-09-01 16:05:26 +02:00
Julian Winkler
c6b98b14f8 Resources + LayoutInflater: throw same Exceptions as on AOSP 2023-09-01 12:39:20 +02:00
Julian Winkler
e694973a1f ViewGroup: add child View at correct index 2023-08-23 14:52:56 +02:00
Julian Winkler
28cd0006bc some fixes to make NewPipe not crash when layouting 2023-08-23 14:52:56 +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
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
Julian Winkler
82744e9e5e add bunch of new java APIs: mostly stubs or copied from AOSP
Many of these classes are only needed to be subclassed by androidx
support library, which is used in many android apps
2023-08-22 15:53:09 +02:00
Julian Winkler
952df5d1fd LayoutParams: actually parse attributes 2023-08-08 14:18:20 +02:00
Julian Winkler
6b79adb2c3 add missing Context attribute to all View constructors 2023-08-08 14:18:20 +02:00
Mis012
0a9591c474 src/api-impl: fix up code style, mainly for code imported from AOSP
used the following (plus manual edits):
`clang-format --style="{BasedOnStyle: LLVM, IndentWidth: 8, UseTab: Always, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: true, ColumnLimit: 0}`
2023-06-22 11:45:46 +02:00
Julian Winkler
0454dcbfd5 stub some APIs for Flappy Bird, mostly webview related 2023-06-18 11:28:40 +02:00
Mis012
52ba443401 misc stubbing 2022-12-01 14:44:16 +01:00