From 81448c395882ea765e92d205bbc1556a78483146 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Sat, 16 Apr 2022 04:29:05 +0800 Subject: [PATCH] `XC_LayoutInflated` should be comparable (#1851) --- .../xposed/callbacks/XC_LayoutInflated.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java b/core/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java index d719787d..76de46c9 100644 --- a/core/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java +++ b/core/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java @@ -30,7 +30,7 @@ import de.robv.android.xposed.XposedBridge.CopyOnWriteSortedSet; * Callback for hooking layouts. Such callbacks can be passed to {@link XResources#hookLayout} * and its variants. */ -public abstract class XC_LayoutInflated extends XCallback { +public abstract class XC_LayoutInflated extends XCallback implements Comparable { /** * Creates a new callback with default priority. */ @@ -80,6 +80,22 @@ public abstract class XC_LayoutInflated extends XCallback { public XResources res; } + /** @hide */ + @Override + public int compareTo(XC_LayoutInflated other) { + if (this == other) + return 0; + + // order descending by priority + if (other.priority != this.priority) + return other.priority - this.priority; + // then randomly + else if (System.identityHashCode(this) < System.identityHashCode(other)) + return -1; + else + return 1; + } + /** * @hide */