Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
platform_frameworks_base-old
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Farzin Kazemzadeh
platform_frameworks_base-old
Commits
5bd61d2d
Commit
5bd61d2d
authored
10 months ago
by
Miranda Kephart
Committed by
Android (Google) Code Review
10 months ago
Browse files
Options
Downloads
Plain Diff
Merge "Monitor screenshot shelf view for outside touch events" into 24D1-dev
parents
9800d7c2
21a41f99
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt
+53
-8
53 additions, 8 deletions
...m/android/systemui/screenshot/ScreenshotShelfViewProxy.kt
with
53 additions
and
8 deletions
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt
+
53
−
8
View file @
5bd61d2d
...
...
@@ -22,8 +22,13 @@ import android.app.Notification
import
android.content.Context
import
android.graphics.Bitmap
import
android.graphics.Rect
import
android.graphics.Region
import
android.os.Looper
import
android.view.Choreographer
import
android.view.InputEvent
import
android.view.KeyEvent
import
android.view.LayoutInflater
import
android.view.MotionEvent
import
android.view.ScrollCaptureResponse
import
android.view.View
import
android.view.ViewTreeObserver
...
...
@@ -48,6 +53,8 @@ import com.android.systemui.screenshot.ui.ScreenshotShelfView
import
com.android.systemui.screenshot.ui.binder.ScreenshotShelfViewBinder
import
com.android.systemui.screenshot.ui.viewmodel.AnimationState
import
com.android.systemui.screenshot.ui.viewmodel.ScreenshotViewModel
import
com.android.systemui.shared.system.InputChannelCompat
import
com.android.systemui.shared.system.InputMonitorCompat
import
dagger.assisted.Assisted
import
dagger.assisted.AssistedFactory
import
dagger.assisted.AssistedInject
...
...
@@ -91,6 +98,8 @@ constructor(
override
var
isPendingSharedTransition
=
false
private
val
animationController
=
ScreenshotAnimationController
(
view
,
viewModel
)
private
var
inputMonitor
:
InputMonitorCompat
?
=
null
private
var
inputEventReceiver
:
InputChannelCompat
.
InputEventReceiver
?
=
null
init
{
shelfViewBinder
.
bind
(
...
...
@@ -106,20 +115,25 @@ constructor(
setOnKeyListener
{
requestDismissal
(
SCREENSHOT_DISMISSED_OTHER
)
}
debugLog
(
DEBUG_WINDOW
)
{
"adding OnComputeInternalInsetsListener"
}
view
.
viewTreeObserver
.
addOnComputeInternalInsetsListener
{
info
->
val
touchableRegion
=
view
.
getTouchRegion
(
windowManager
.
currentWindowMetrics
.
windowInsets
.
getInsets
(
WindowInsets
.
Type
.
systemGestures
()
)
)
info
.
setTouchableInsets
(
ViewTreeObserver
.
InternalInsetsInfo
.
TOUCHABLE_INSETS_REGION
)
info
.
touchableRegion
.
set
(
touchable
Region
)
info
.
touchableRegion
.
set
(
getTouch
Region
()
)
}
screenshotPreview
=
view
.
screenshotPreview
thumbnailObserver
.
setViews
(
view
.
blurredScreenshotPreview
,
view
.
requireViewById
(
R
.
id
.
screenshot_preview_border
)
)
view
.
addOnAttachStateChangeListener
(
object
:
View
.
OnAttachStateChangeListener
{
override
fun
onViewAttachedToWindow
(
v
:
View
)
{
startInputListening
()
}
override
fun
onViewDetachedFromWindow
(
v
:
View
)
{
stopInputListening
()
}
}
)
}
override
fun
reset
()
{
...
...
@@ -236,7 +250,12 @@ constructor(
callbacks
?.
onUserInteraction
()
// reset the timeout
}
override
fun
stopInputListening
()
{}
override
fun
stopInputListening
()
{
inputMonitor
?.
dispose
()
inputMonitor
=
null
inputEventReceiver
?.
dispose
()
inputEventReceiver
=
null
}
override
fun
requestFocus
()
{
view
.
requestFocus
()
...
...
@@ -303,6 +322,32 @@ constructor(
)
}
private
fun
startInputListening
()
{
stopInputListening
()
inputMonitor
=
InputMonitorCompat
(
"Screenshot"
,
displayId
).
also
{
inputEventReceiver
=
it
.
getInputReceiver
(
Looper
.
getMainLooper
(),
Choreographer
.
getInstance
())
{
ev
:
InputEvent
?
->
if
(
ev
is
MotionEvent
&&
ev
.
actionMasked
==
MotionEvent
.
ACTION_DOWN
&&
!
getTouchRegion
().
contains
(
ev
.
rawX
.
toInt
(),
ev
.
rawY
.
toInt
())
)
{
callbacks
?.
onTouchOutside
()
}
}
}
}
private
fun
getTouchRegion
():
Region
{
return
view
.
getTouchRegion
(
windowManager
.
currentWindowMetrics
.
windowInsets
.
getInsets
(
WindowInsets
.
Type
.
systemGestures
()
)
)
}
@AssistedFactory
interface
Factory
:
ScreenshotViewProxy
.
Factory
{
override
fun
getProxy
(
context
:
Context
,
displayId
:
Int
):
ScreenshotShelfViewProxy
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment