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
|
JNIEXPORT void JNICALL Java_android_view_View_native_1setBackgroundDrawable
|
||||||
(JNIEnv *, jobject, jlong, jlong);
|
(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
|
* Class: android_view_View
|
||||||
* Method: nativeInvalidate
|
* 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)));
|
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));
|
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_layout(long widget, int l, int t, int r, int b);
|
||||||
protected native void native_requestLayout(long widget);
|
protected native void native_requestLayout(long widget);
|
||||||
protected native void native_setBackgroundDrawable(long widget, long paintable);
|
protected native void native_setBackgroundDrawable(long widget, long paintable);
|
||||||
|
protected native void native_queueAllocate(long widget);
|
||||||
|
|
||||||
// --- stubs
|
// --- stubs
|
||||||
|
|
||||||
@@ -1379,7 +1380,11 @@ public class View extends Object {
|
|||||||
public float getTranslationX() {return 0.f;}
|
public float getTranslationX() {return 0.f;}
|
||||||
public float getTranslationY() {return 0.f;}
|
public float getTranslationY() {return 0.f;}
|
||||||
public void setTranslationX(float translationX) {}
|
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) {
|
public void setAlpha(float alpha) {
|
||||||
native_setVisibility(widget, visibility, alpha);
|
native_setVisibility(widget, visibility, alpha);
|
||||||
|
|||||||
Reference in New Issue
Block a user