mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
e2025aa8f2
Offset fixed layers in the compositor so that the toolbar in Firefox for Android doesn't obscure them. This does not affect layout, so input on the elements in said layers will appear broken.
60 lines
1.7 KiB
Java
60 lines
1.7 KiB
Java
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.gecko;
|
|
|
|
import org.mozilla.gecko.gfx.LayerView;
|
|
|
|
import android.content.Context;
|
|
import android.util.AttributeSet;
|
|
import android.util.Log;
|
|
import android.view.MotionEvent;
|
|
import android.widget.LinearLayout;
|
|
|
|
public class BrowserToolbarLayout extends LinearLayout {
|
|
private static final String LOGTAG = "GeckoToolbarLayout";
|
|
|
|
public BrowserToolbarLayout(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
}
|
|
|
|
@Override
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
// If the motion event has occured below the toolbar (due to the scroll
|
|
// offset), let it pass through to the page.
|
|
if (event != null && event.getY() > getHeight() - getScrollY()) {
|
|
return false;
|
|
}
|
|
|
|
return super.onTouchEvent(event);
|
|
}
|
|
|
|
@Override
|
|
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
|
|
super.onScrollChanged(l, t, oldl, oldt);
|
|
|
|
if (t != oldt) {
|
|
refreshMargins();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
|
super.onSizeChanged(w, h, oldw, oldh);
|
|
|
|
if (h != oldh) {
|
|
refreshMargins();
|
|
}
|
|
}
|
|
|
|
public void refreshMargins() {
|
|
LayerView view = GeckoApp.mAppContext.getLayerView();
|
|
if (view != null) {
|
|
view.getLayerClient().setFixedLayerMargins(0, getHeight() - getScrollY(), 0, 0);
|
|
}
|
|
}
|
|
}
|
|
|