Bug 1474925 - TimePicker swipe not possible in landscape; r=jchen

MozReview-Commit-ID: DVp6d40OLE3

--HG--
extra : rebase_source : 29ae6312d79cbed0cea128a7e42e38d769be7eab
This commit is contained in:
Petru Lingurar 2018-07-18 10:23:09 +03:00
parent dc2a4a2d84
commit 178925493d
2 changed files with 52 additions and 1 deletions

View file

@ -14,6 +14,7 @@ import org.mozilla.gecko.util.GeckoBundle;
import org.mozilla.gecko.widget.AllCapsTextView;
import org.mozilla.gecko.widget.FocusableDatePicker;
import org.mozilla.gecko.widget.DateTimePicker;
import org.mozilla.gecko.widget.FocusableTimePicker;
import android.content.Context;
import android.content.res.Configuration;
@ -210,7 +211,8 @@ public abstract class PromptInput {
DateTimePicker.PickersState.WEEK, mMinValue, mMaxValue);
mView = (View)input;
} else if (mType.equals("time")) {
TimePicker input = new TimePicker(context);
// FocusableDatePicker allow us to have priority in responding to scroll events.
TimePicker input = new FocusableTimePicker(context);
input.setIs24HourView(DateFormat.is24HourFormat(context));
GregorianCalendar calendar = new GregorianCalendar();

View file

@ -0,0 +1,49 @@
/* -*- 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.widget;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewParent;
import android.widget.TimePicker;
/**
* This is based on the platform's {@link TimePicker}.<br>
* The only difference is that it will prevent it's parent from receiving touch events.
*/
public class FocusableTimePicker extends TimePicker {
public FocusableTimePicker(Context context) {
super(context);
}
public FocusableTimePicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FocusableTimePicker(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@SuppressLint("NewApi")
public FocusableTimePicker(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
ViewParent parentView = getParent();
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
if (parentView != null) {
parentView.requestDisallowInterceptTouchEvent(true);
}
}
return false;
}
}