Currently PopupWindow used for the floating toolbar specifies
neither FLAG_LAYOUT_NO_LIMITS nor FLAG_LAYOUT_IN_SCREEN.
As a result, the floating toolbar can overlap the selected
text when the attached window does not have enough height.
Here is the repro code.
final TextView textView = new TextView(this);
textView.setLayoutParams(
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
textView.setText("A test sentence.");
textView.setTextIsSelectable(true);
final AlertDialog dialog = new AlertDialog.Builder(this)
.setView(textView)
.create();
dialog.getWindow().setGravity(Gravity.BOTTOM)
dialog.show();
If you tap a word in the dialog, the floating toolbar
unintentionally overlaps the selected text due to the limited
height of the AlertDialog.
It also turns out that just calling
PopupWindow.setClippingEnabled(false)
to specify FLAG_LAYOUT_NO_LIMITS is not sufficient and ends up
showing the toolbar on the NavBar because we have mistakenly
compared bounds in window-local coordinates
(e.g. FloatingActionModemContentRectOnWindow) with bounds in
screen coordinates (e.g. FloatingActionMode#mScreenRect).
Hence the confusion of window-local coordinates and screen
coordinates in FloatingToolbar and FloatingToolbar also needs
to be addresses.
To summarize here are the notable changes in this CL:
- Specify FLAG_LAYOUT_NO_LIMITS so that the floating
toolbar can be placed outside of the attached window.
(We do this with PopupWindow#setClippingEnabled)
- Switch to use screen coordinates from window-local
coordiantes in FloatingToolbar and FloatingActionMode
because some system components such as WindowManager
prefer screen coordinates.
- Put -OnScreen suffix for Rect and Point variables
as long as they are in screen coordinates.
Bug: 22335001
Change-Id: I71a8d356e868dc7715b030ca1078da4ec39368c3
Activating the assistant will now route through SysUI, so
we have the logic whether to start an activity or to start a voice
interaction session in one single place.
Bug: 22201770
Change-Id: I0f4699533aea2a1e595ee25a844434c82f548c01
- mouse hover moves the selected item in the menu. It moves
the selection rectangle, and further up/down key or enter
key will start from the hovered item.
- when the mouse exits from the entire popup window, the
selection is canceled. Further up/down key will start from
the first item.
To implement these behaviors, and consider about other keyboard
behaviors which is special to menus, I believe it justifies
to create another class for the menu popups rather than using
ListPopupWindow directly.
Bug: 19642104
Change-Id: I5e405c0491c67fdef9764898701119979ec13a9f
This reverts commit 001d51496d.
Background: To just inherit AlertDialog, the content view should include
a title as we do in support library (AlertDialog uses NO_TITLE feature),
but up-streaming support library implementation to the framework at this
point might cause more issues. Verified that the narrow dialog issue
(b/22044600) does not happen in the framework implementation regardless of
whether it uses AlertDialog or not.
Bug: 22286869
Change-Id: Ic2554cc9e683beff29d1deee91945c1dace83ab1
Apply an automated decay factor if apps decide to claim all of their
targets are SUPER IMPORTANT. Apply the multiplier from the apps
themselves as well as a penalty for apps that come in late - let's see
how fast developers get their ChooserTargetServices to start!
Also fix a bug with ResolverDrawerLayout where dragging from the title
area wouldn't always work properly.
Bug 22302285
Change-Id: Ib6eb2b6fb92608790b2267c0f671c9ae59b2907e
Argh, this explains some weird instances of negative power
given to Wakelock usage. Realtime and uptime were switched in the
parameter list, and since they're both longs, compiler was happy.
Bug:22295225
Change-Id: I6759504f2690baf66af567d8b1a6d0478bc22228