mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 849845 - Map Gamepad-Y to toggle chrome on Firefox/Android. r=kats
This commit is contained in:
parent
ba27cc5950
commit
5627c0a3be
@ -35,6 +35,7 @@ import android.nfc.NfcEvent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.InputDevice;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
@ -56,7 +57,8 @@ import java.util.Vector;
|
||||
|
||||
abstract public class BrowserApp extends GeckoApp
|
||||
implements TabsPanel.TabsLayoutChangeListener,
|
||||
PropertyAnimator.PropertyAnimationListener {
|
||||
PropertyAnimator.PropertyAnimationListener,
|
||||
View.OnKeyListener {
|
||||
private static final String LOGTAG = "GeckoBrowserApp";
|
||||
|
||||
private static final String PREF_CHROME_DYNAMICTOOLBAR = "browser.chrome.dynamictoolbar";
|
||||
@ -289,6 +291,48 @@ abstract public class BrowserApp extends GeckoApp
|
||||
return super.onInterceptTouchEvent(view, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||
// Global onKey handler. This is called if the focused UI doesn't
|
||||
// handle the key event, and before Gecko swallows the events.
|
||||
if (event.getAction() != KeyEvent.ACTION_DOWN) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Toggle/focus the address bar on gamepad-y button.
|
||||
if (keyCode == KeyEvent.KEYCODE_BUTTON_Y &&
|
||||
(event.getSource() & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) {
|
||||
mToolbarLocked = true;
|
||||
if (mBrowserToolbar.isVisible()) {
|
||||
if (mDynamicToolbarEnabled &&
|
||||
Boolean.FALSE.equals(mAboutHomeShowing)) {
|
||||
mBrowserToolbar.animateVisibility(false, 0);
|
||||
mLayerView.requestFocus();
|
||||
} else {
|
||||
// Just focus the address bar when about:home is visible
|
||||
// or when the dynamic toolbar isn't enabled.
|
||||
mBrowserToolbar.requestFocusFromTouch();
|
||||
}
|
||||
} else {
|
||||
mBrowserToolbar.animateVisibility(true, 0);
|
||||
mBrowserToolbar.requestFocusFromTouch();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (onKey(null, keyCode, event)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
void handleReaderAdded(boolean success, final String title, final String url) {
|
||||
if (!success) {
|
||||
showToast(R.string.reading_list_failed, Toast.LENGTH_SHORT);
|
||||
@ -343,6 +387,9 @@ abstract public class BrowserApp extends GeckoApp
|
||||
mBrowserToolbar = new BrowserToolbar(this);
|
||||
mBrowserToolbar.from(actionBar);
|
||||
|
||||
// Intercept key events for gamepad shortcuts
|
||||
actionBar.setOnKeyListener(this);
|
||||
|
||||
if (mTabsPanel != null) {
|
||||
mTabsPanel.setTabsLayoutChangeListener(this);
|
||||
updateSideBarState();
|
||||
@ -474,6 +521,9 @@ abstract public class BrowserApp extends GeckoApp
|
||||
Tabs.getInstance().loadUrl(uri, flags);
|
||||
}
|
||||
}
|
||||
|
||||
// Intercept key events for gamepad shortcuts
|
||||
mLayerView.setOnKeyListener(this);
|
||||
}
|
||||
|
||||
public void setToolbarHeight(int aHeight, int aVisibleHeight) {
|
||||
|
@ -1158,7 +1158,7 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
|
||||
}
|
||||
|
||||
public void requestFocusFromTouch() {
|
||||
mLayout.requestFocusFromTouch();
|
||||
mAwesomeBar.requestFocusFromTouch();
|
||||
}
|
||||
|
||||
public void updateBackButton(boolean enabled) {
|
||||
|
Loading…
Reference in New Issue
Block a user