You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
View.setTranslationY(): queue allocate when called on CoordinatorLayout
androidx adjusts the translation a little bit and immediately reverts it to trigger a layout pass on the CoordinatorLayout. Calling gtk_widget_queue_allocate here makes CoordinatorLayout behave correctly, but it causes strange issues with other Views. Therefore, it is done only for CoordinatorLayouts for now.
This commit is contained in:
@@ -287,6 +287,14 @@ JNIEXPORT void JNICALL Java_android_view_View_native_1requestLayout
|
||||
JNIEXPORT void JNICALL Java_android_view_View_native_1setBackgroundDrawable
|
||||
(JNIEnv *, jobject, jlong, jlong);
|
||||
|
||||
/*
|
||||
* Class: android_view_View
|
||||
* Method: native_queueAllocate
|
||||
* Signature: (J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_android_view_View_native_1queueAllocate
|
||||
(JNIEnv *, jobject, jlong);
|
||||
|
||||
/*
|
||||
* Class: android_view_View
|
||||
* Method: nativeInvalidate
|
||||
|
||||
@@ -536,3 +536,8 @@ JNIEXPORT jboolean JNICALL Java_android_view_View_native_1getMatrix(JNIEnv *env,
|
||||
GtkWidget *widget = gtk_widget_get_parent(GTK_WIDGET(_PTR(widget_ptr)));
|
||||
return gtk_widget_compute_transform(gtk_widget_get_parent(widget), widget, _PTR(matrix_ptr));
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_android_view_View_native_1queueAllocate(JNIEnv *env, jobject this, jlong widget_ptr)
|
||||
{
|
||||
gtk_widget_queue_allocate(GTK_WIDGET(_PTR(widget_ptr)));
|
||||
}
|
||||
|
||||
@@ -948,6 +948,7 @@ public class View extends Object {
|
||||
protected native void native_layout(long widget, int l, int t, int r, int b);
|
||||
protected native void native_requestLayout(long widget);
|
||||
protected native void native_setBackgroundDrawable(long widget, long paintable);
|
||||
protected native void native_queueAllocate(long widget);
|
||||
|
||||
// --- stubs
|
||||
|
||||
@@ -1379,7 +1380,11 @@ public class View extends Object {
|
||||
public float getTranslationX() {return 0.f;}
|
||||
public float getTranslationY() {return 0.f;}
|
||||
public void setTranslationX(float translationX) {}
|
||||
public void setTranslationY(float translationY) {}
|
||||
public void setTranslationY(float translationY) {
|
||||
// CoordinatorLayout abuses this method to trigger a layout pass
|
||||
if (getClass().getName().equals("androidx.coordinatorlayout.widget.CoordinatorLayout"))
|
||||
native_queueAllocate(widget);
|
||||
}
|
||||
|
||||
public void setAlpha(float alpha) {
|
||||
native_setVisibility(widget, visibility, alpha);
|
||||
|
||||
Reference in New Issue
Block a user