From 996fd27380b56ad9112feb8e246752846a787760 Mon Sep 17 00:00:00 2001 From: Braden Farmer Date: Fri, 19 Oct 2018 23:13:54 -0600 Subject: [PATCH] Dirty hack to work around context menu positioning issues on Chrome OS --- .../farmerbb/taskbar/activity/ContextMenuActivity.java | 8 ++++++++ .../com/farmerbb/taskbar/activity/MainActivity.java | 17 +++++++++++++++-- app/src/main/res/values/dimens.xml | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java index cae1baa9..1d72cf40 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java @@ -200,6 +200,14 @@ public class ContextMenuActivity extends PreferenceActivity implements Preferenc params.width = getResources().getDimensionPixelSize(R.dimen.context_menu_width); params.dimAmount = 0; + if(U.isChromeOs(this) && U.getTaskbarPosition(this).contains("bottom")) { + SharedPreferences pref = U.getSharedPreferences(this); + + if(pref.getBoolean("chrome_os_context_menu_fix", true) + && !pref.getBoolean("has_caption", false)) + params.y = params.y - getResources().getDimensionPixelSize(R.dimen.caption_offset); + } + getWindow().setAttributes(params); if(U.isChromeOs(this) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java index 12fc86c3..1befac2f 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java @@ -33,6 +33,7 @@ import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.support.design.widget.Snackbar; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.ActionBar; @@ -67,6 +68,8 @@ public class MainActivity extends AppCompatActivity { } }; + private boolean hasCaption = false; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -118,6 +121,13 @@ public class MainActivity extends AppCompatActivity { if(!launcherEnabled) LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.KILL_HOME_ACTIVITY")); + // Update caption state + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && U.isChromeOs(this)) { + getWindow().setRestrictedCaptionAreaListener(rect -> hasCaption = true); + + new Handler().postDelayed(() -> pref.edit().putBoolean("has_caption", hasCaption).apply(), 500); + } + if(BuildConfig.APPLICATION_ID.equals(BuildConfig.PAID_APPLICATION_ID)) { File file = new File(getFilesDir() + File.separator + "imported_successfully"); if(freeVersionInstalled() && !file.exists()) { @@ -286,9 +296,12 @@ public class MainActivity extends AppCompatActivity { @Override protected void onDestroy() { - super.onDestroy(); - LocalBroadcastManager.getInstance(this).unregisterReceiver(switchReceiver); + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && U.isChromeOs(this)) + getWindow().setRestrictedCaptionAreaListener(null); + + super.onDestroy(); } @SuppressWarnings("deprecation") diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index a16eabb6..affc9c6a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -37,4 +37,5 @@ 5dp 8dp 64dp + 48dp -- 2.11.0