From f3c41d2e471282ac0216e307218a0974623cfc14 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 18 Jan 2024 15:10:41 +0100 Subject: [PATCH] Fixed views --- .../email/AppCompatViewInflaterEx.java | 39 +--------- .../faircode/email/FixedConstraintLayout.java | 20 +++++ .../email/FixedCoordinatorLayout.java | 20 +++++ .../eu/faircode/email/FixedFrameLayout.java | 20 +++++ .../eu/faircode/email/FixedLinearLayout.java | 75 ++++++++++++++++++ .../faircode/email/FixedNestedScrollView.java | 20 +++++ .../faircode/email/FixedRelativeLayout.java | 73 ++++++++++++++++++ .../java/eu/faircode/email/FixedView.java | 76 +++++++++++++++++++ 8 files changed, 307 insertions(+), 36 deletions(-) create mode 100644 app/src/main/java/eu/faircode/email/FixedLinearLayout.java create mode 100644 app/src/main/java/eu/faircode/email/FixedRelativeLayout.java create mode 100644 app/src/main/java/eu/faircode/email/FixedView.java 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); + } +}