Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2312)

Unified Diff: ash/ash_touch_exploration_manager_chromeos.cc

Issue 2378773011: Only exclude workarea from touch-exploration with active shell-surface (Closed)
Patch Set: CL comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/ash_touch_exploration_manager_chromeos.cc
diff --git a/ash/ash_touch_exploration_manager_chromeos.cc b/ash/ash_touch_exploration_manager_chromeos.cc
index 058553043f958349afe4d30cf0027243aa344ea8..d79710c775eee41b8e0170b1a8145cce9edeff84 100644
--- a/ash/ash_touch_exploration_manager_chromeos.cc
+++ b/ash/ash_touch_exploration_manager_chromeos.cc
@@ -7,8 +7,11 @@
#include "ash/common/accessibility_delegate.h"
#include "ash/common/system/tray/system_tray_notifier.h"
#include "ash/common/wm_shell.h"
+#include "ash/display/display_manager.h"
#include "ash/root_window_controller.h"
+#include "ash/root_window_settings.h"
#include "ash/shell.h"
+#include "ash/wm/window_state_aura.h"
#include "ash/wm/window_util.h"
#include "base/command_line.h"
#include "chromeos/audio/chromeos_sounds.h"
@@ -25,6 +28,7 @@ AshTouchExplorationManager::AshTouchExplorationManager(
audio_handler_(chromeos::CrasAudioHandler::Get()) {
WmShell::Get()->system_tray_notifier()->AddAccessibilityObserver(this);
Shell::GetInstance()->activation_client()->AddObserver(this);
+ WmShell::Get()->AddDisplayObserver(this);
UpdateTouchExplorationState();
}
@@ -34,6 +38,7 @@ AshTouchExplorationManager::~AshTouchExplorationManager() {
if (system_tray_notifier)
system_tray_notifier->RemoveAccessibilityObserver(this);
Shell::GetInstance()->activation_client()->RemoveObserver(this);
+ WmShell::Get()->RemoveDisplayObserver(this);
}
void AshTouchExplorationManager::OnAccessibilityModeChanged(
@@ -88,6 +93,10 @@ void AshTouchExplorationManager::HandleAccessibilityGesture(
WmShell::Get()->accessibility_delegate()->HandleAccessibilityGesture(gesture);
}
+void AshTouchExplorationManager::OnDisplayConfigurationChanged() {
+ UpdateTouchExplorationState();
+}
+
void AshTouchExplorationManager::OnWindowActivated(
aura::client::ActivationChangeObserver::ActivationReason reason,
aura::Window* gained_active,
@@ -115,11 +124,24 @@ void AshTouchExplorationManager::UpdateTouchExplorationState() {
const bool spoken_feedback_enabled =
WmShell::Get()->accessibility_delegate()->IsSpokenFeedbackEnabled();
- if (!pass_through_surface && spoken_feedback_enabled &&
- !touch_exploration_controller_.get()) {
- touch_exploration_controller_.reset(new ui::TouchExplorationController(
- root_window_controller_->GetRootWindow(), this));
- } else if (!spoken_feedback_enabled || pass_through_surface) {
+ if (spoken_feedback_enabled) {
+ if (!touch_exploration_controller_.get()) {
+ touch_exploration_controller_ =
+ base::MakeUnique<ui::TouchExplorationController>(
+ root_window_controller_->GetRootWindow(), this);
+ }
+ if (pass_through_surface) {
+ aura::Window* root_window = root_window_controller_->GetRootWindow();
+ int64_t display_id = ash::GetRootWindowSettings(root_window)->display_id;
+ const gfx::Rect& work_area = ash::Shell::GetInstance()
+ ->display_manager()
+ ->GetDisplayForId(display_id)
+ .work_area();
+ touch_exploration_controller_->SetExcludeBounds(work_area);
+ } else {
+ touch_exploration_controller_->SetExcludeBounds(gfx::Rect());
+ }
+ } else {
touch_exploration_controller_.reset();
}
}

Powered by Google App Engine
This is Rietveld 408576698