diff --git a/app/src/main/java/eu/faircode/email/AppCompatViewInflaterEx.java b/app/src/main/java/eu/faircode/email/AppCompatViewInflaterEx.java
index cb401df761..729ac07693 100644
--- a/app/src/main/java/eu/faircode/email/AppCompatViewInflaterEx.java
+++ b/app/src/main/java/eu/faircode/email/AppCompatViewInflaterEx.java
@@ -21,10 +21,7 @@ package eu.faircode.email;
import android.content.Context;
import android.util.AttributeSet;
-import android.view.MotionEvent;
import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -85,46 +82,16 @@ public class AppCompatViewInflaterEx extends AppCompatViewInflater {
*/
if ("LinearLayout".equals(name))
- return new LinearLayout(context, attrs) {
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- try {
- return super.dispatchTouchEvent(ev);
- } catch (Throwable ex) {
- Log.e(ex);
- return false;
- }
- }
- };
+ return new FixedLinearLayout(context, attrs);
if ("RelativeLayout".equals(name))
- return new RelativeLayout(context, attrs) {
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- try {
- return super.dispatchTouchEvent(ev);
- } catch (Throwable ex) {
- Log.e(ex);
- return false;
- }
- }
- };
+ return new FixedRelativeLayout(context, attrs);
if ("FrameLayout".equals(name))
return new FixedFrameLayout(context, attrs);
if ("View".equals(name))
- return new View(context, attrs) {
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- try {
- return super.dispatchTouchEvent(ev);
- } catch (Throwable ex) {
- Log.e(ex);
- return false;
- }
- }
- };
+ return new FixedView(context, attrs);
if ("androidx.coordinatorlayout.widget.CoordinatorLayout".equals(name))
return new FixedCoordinatorLayout(context, attrs);
diff --git a/app/src/main/java/eu/faircode/email/FixedConstraintLayout.java b/app/src/main/java/eu/faircode/email/FixedConstraintLayout.java
index d8e36d932c..7cd72b589b 100644
--- a/app/src/main/java/eu/faircode/email/FixedConstraintLayout.java
+++ b/app/src/main/java/eu/faircode/email/FixedConstraintLayout.java
@@ -119,4 +119,24 @@ public class FixedConstraintLayout extends ConstraintLayout {
return false;
}
}
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
}
diff --git a/app/src/main/java/eu/faircode/email/FixedCoordinatorLayout.java b/app/src/main/java/eu/faircode/email/FixedCoordinatorLayout.java
index c43b40ad38..1cf2fc48a4 100644
--- a/app/src/main/java/eu/faircode/email/FixedCoordinatorLayout.java
+++ b/app/src/main/java/eu/faircode/email/FixedCoordinatorLayout.java
@@ -59,4 +59,24 @@ public class FixedCoordinatorLayout extends CoordinatorLayout {
return false;
}
}
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
}
diff --git a/app/src/main/java/eu/faircode/email/FixedFrameLayout.java b/app/src/main/java/eu/faircode/email/FixedFrameLayout.java
index 83dcda3910..3b2e4bd3fd 100644
--- a/app/src/main/java/eu/faircode/email/FixedFrameLayout.java
+++ b/app/src/main/java/eu/faircode/email/FixedFrameLayout.java
@@ -72,4 +72,24 @@ public class FixedFrameLayout extends FrameLayout {
return false;
}
}
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
}
diff --git a/app/src/main/java/eu/faircode/email/FixedLinearLayout.java b/app/src/main/java/eu/faircode/email/FixedLinearLayout.java
new file mode 100644
index 0000000000..ccba70996d
--- /dev/null
+++ b/app/src/main/java/eu/faircode/email/FixedLinearLayout.java
@@ -0,0 +1,75 @@
+package eu.faircode.email;
+
+/*
+ This file is part of FairEmail.
+
+ FairEmail is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ FairEmail is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FairEmail. If not, see .
+
+ Copyright 2018-2024 by Marcel Bokhorst (M66B)
+*/
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.LinearLayout;
+
+import androidx.annotation.Nullable;
+
+public class FixedLinearLayout extends LinearLayout {
+ public FixedLinearLayout(Context context) {
+ super(context);
+ }
+
+ public FixedLinearLayout(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public FixedLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public FixedLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ try {
+ return super.dispatchTouchEvent(ev);
+ } catch (Throwable ex) {
+ Log.e(ex);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
+}
diff --git a/app/src/main/java/eu/faircode/email/FixedNestedScrollView.java b/app/src/main/java/eu/faircode/email/FixedNestedScrollView.java
index ba208d836e..e0b9e6c2b6 100644
--- a/app/src/main/java/eu/faircode/email/FixedNestedScrollView.java
+++ b/app/src/main/java/eu/faircode/email/FixedNestedScrollView.java
@@ -47,4 +47,24 @@ public class FixedNestedScrollView extends NestedScrollView {
Log.w(ex);
}
}
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
}
diff --git a/app/src/main/java/eu/faircode/email/FixedRelativeLayout.java b/app/src/main/java/eu/faircode/email/FixedRelativeLayout.java
new file mode 100644
index 0000000000..eb517a4bd8
--- /dev/null
+++ b/app/src/main/java/eu/faircode/email/FixedRelativeLayout.java
@@ -0,0 +1,73 @@
+package eu.faircode.email;
+
+/*
+ This file is part of FairEmail.
+
+ FairEmail is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ FairEmail is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FairEmail. If not, see .
+
+ Copyright 2018-2024 by Marcel Bokhorst (M66B)
+*/
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.RelativeLayout;
+
+public class FixedRelativeLayout extends RelativeLayout {
+ public FixedRelativeLayout(Context context) {
+ super(context);
+ }
+
+ public FixedRelativeLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public FixedRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public FixedRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ try {
+ return super.dispatchTouchEvent(ev);
+ } catch (Throwable ex) {
+ Log.e(ex);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
+}
diff --git a/app/src/main/java/eu/faircode/email/FixedView.java b/app/src/main/java/eu/faircode/email/FixedView.java
new file mode 100644
index 0000000000..b62d33f34b
--- /dev/null
+++ b/app/src/main/java/eu/faircode/email/FixedView.java
@@ -0,0 +1,76 @@
+package eu.faircode.email;
+
+/*
+ This file is part of FairEmail.
+
+ FairEmail is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ FairEmail is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FairEmail. If not, see .
+
+ Copyright 2018-2024 by Marcel Bokhorst (M66B)
+*/
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+
+public class FixedView extends View {
+
+ public FixedView(Context context) {
+ super(context);
+ }
+
+ public FixedView(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public FixedView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public FixedView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ try {
+ return super.dispatchTouchEvent(ev);
+ } catch (Throwable ex) {
+ Log.e(ex);
+ return false;
+ }
+ }
+
+ @Override
+ public boolean post(Runnable action) {
+ return super.post(new RunnableEx("post") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ });
+ }
+
+ @Override
+ public boolean postDelayed(Runnable action, long delayMillis) {
+ return super.postDelayed(new RunnableEx("postDelayed") {
+ @Override
+ protected void delegate() {
+ action.run();
+ }
+ }, delayMillis);
+ }
+}