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

Side by Side Diff: ash/sticky_keys/sticky_keys_overlay.cc

Issue 757433005: Revert of Speculative fix for sticky keys overlay crash. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 unified diff | Download patch
« no previous file with comments | « ash/sticky_keys/sticky_keys_overlay.h ('k') | ash/sticky_keys/sticky_keys_overlay_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/sticky_keys/sticky_keys_overlay.h" 5 #include "ash/sticky_keys/sticky_keys_overlay.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h" 8 #include "ash/shell_window_ids.h"
9 #include "ash/sticky_keys/sticky_keys_controller.h" 9 #include "ash/sticky_keys/sticky_keys_controller.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 /////////////////////////////////////////////////////////////////////////////// 102 ///////////////////////////////////////////////////////////////////////////////
103 // StickyKeysOverlayView 103 // StickyKeysOverlayView
104 class StickyKeysOverlayView : public views::WidgetDelegateView { 104 class StickyKeysOverlayView : public views::WidgetDelegateView {
105 public: 105 public:
106 StickyKeysOverlayView(); 106 StickyKeysOverlayView();
107 107
108 ~StickyKeysOverlayView() override; 108 ~StickyKeysOverlayView() override;
109 109
110 // views::WidgetDelegateView overrides: 110 // views::WidgetDelegateView overrides:
111 void OnPaint(gfx::Canvas* canvas) override; 111 void OnPaint(gfx::Canvas* canvas) override;
112 void DeleteDelegate() override;
113 112
114 void SetKeyState(ui::EventFlags modifier, StickyKeyState state); 113 void SetKeyState(ui::EventFlags modifier, StickyKeyState state);
115 114
116 StickyKeyState GetKeyState(ui::EventFlags modifier); 115 StickyKeyState GetKeyState(ui::EventFlags modifier);
117 116
118 void SetModifierVisible(ui::EventFlags modifier, bool visible); 117 void SetModifierVisible(ui::EventFlags modifier, bool visible);
119 bool GetModifierVisible(ui::EventFlags modifier); 118 bool GetModifierVisible(ui::EventFlags modifier);
120 119
121 private: 120 private:
122 void AddKeyLabel(ui::EventFlags modifier, const std::string& key_label); 121 void AddKeyLabel(ui::EventFlags modifier, const std::string& key_label);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 StickyKeysOverlayView::~StickyKeysOverlayView() {} 159 StickyKeysOverlayView::~StickyKeysOverlayView() {}
161 160
162 void StickyKeysOverlayView::OnPaint(gfx::Canvas* canvas) { 161 void StickyKeysOverlayView::OnPaint(gfx::Canvas* canvas) {
163 SkPaint paint; 162 SkPaint paint;
164 paint.setStyle(SkPaint::kFill_Style); 163 paint.setStyle(SkPaint::kFill_Style);
165 paint.setColor(SkColorSetARGB(0xB3, 0x55, 0x55, 0x55)); 164 paint.setColor(SkColorSetARGB(0xB3, 0x55, 0x55, 0x55));
166 canvas->DrawRoundRect(GetLocalBounds(), 2, paint); 165 canvas->DrawRoundRect(GetLocalBounds(), 2, paint);
167 views::WidgetDelegateView::OnPaint(canvas); 166 views::WidgetDelegateView::OnPaint(canvas);
168 } 167 }
169 168
170 void StickyKeysOverlayView::DeleteDelegate() {
171 // The ownership of a WidgetDelegateView is kind of tricky. It has the
172 // lifetime semantics of both a View and a WidgetDelegate. We should just rely
173 // on the Views semantics and do nothing here. This object will be deleted
174 // when the parent widget is deleted.
175 }
176
177 void StickyKeysOverlayView::SetKeyState(ui::EventFlags modifier, 169 void StickyKeysOverlayView::SetKeyState(ui::EventFlags modifier,
178 StickyKeyState state) { 170 StickyKeyState state) {
179 ModifierLabelMap::iterator it = modifier_label_map_.find(modifier); 171 ModifierLabelMap::iterator it = modifier_label_map_.find(modifier);
180 DCHECK(it != modifier_label_map_.end()); 172 DCHECK(it != modifier_label_map_.end());
181 if (it != modifier_label_map_.end()) { 173 if (it != modifier_label_map_.end()) {
182 StickyKeyOverlayLabel* label = it->second; 174 StickyKeyOverlayLabel* label = it->second;
183 label->SetKeyState(state); 175 label->SetKeyState(state);
184 } 176 }
185 } 177 }
186 178
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 void StickyKeysOverlay::SetModifierKeyState(ui::EventFlags modifier, 272 void StickyKeysOverlay::SetModifierKeyState(ui::EventFlags modifier,
281 StickyKeyState state) { 273 StickyKeyState state) {
282 overlay_view_->SetKeyState(modifier, state); 274 overlay_view_->SetKeyState(modifier, state);
283 } 275 }
284 276
285 StickyKeyState StickyKeysOverlay::GetModifierKeyState( 277 StickyKeyState StickyKeysOverlay::GetModifierKeyState(
286 ui::EventFlags modifier) { 278 ui::EventFlags modifier) {
287 return overlay_view_->GetKeyState(modifier); 279 return overlay_view_->GetKeyState(modifier);
288 } 280 }
289 281
290 views::Widget* StickyKeysOverlay::GetWidgetForTesting() {
291 return overlay_widget_.get();
292 }
293
294 gfx::Rect StickyKeysOverlay::CalculateOverlayBounds() { 282 gfx::Rect StickyKeysOverlay::CalculateOverlayBounds() {
295 int x = is_visible_ ? kHorizontalOverlayOffset : -widget_size_.width(); 283 int x = is_visible_ ? kHorizontalOverlayOffset : -widget_size_.width();
296 return gfx::Rect(gfx::Point(x, kVerticalOverlayOffset), widget_size_); 284 return gfx::Rect(gfx::Point(x, kVerticalOverlayOffset), widget_size_);
297 } 285 }
298 286
299 void StickyKeysOverlay::OnLayerAnimationEnded( 287 void StickyKeysOverlay::OnLayerAnimationEnded(
300 ui::LayerAnimationSequence* sequence) { 288 ui::LayerAnimationSequence* sequence) {
301 ui::LayerAnimator* animator = overlay_widget_->GetLayer()->GetAnimator(); 289 ui::LayerAnimator* animator = overlay_widget_->GetLayer()->GetAnimator();
302 if (animator) 290 if (animator)
303 animator->RemoveObserver(this); 291 animator->RemoveObserver(this);
304 if (!is_visible_) 292 if (!is_visible_)
305 overlay_widget_->Hide(); 293 overlay_widget_->Hide();
306 } 294 }
307 295
308 void StickyKeysOverlay::OnLayerAnimationAborted( 296 void StickyKeysOverlay::OnLayerAnimationAborted(
309 ui::LayerAnimationSequence* sequence) { 297 ui::LayerAnimationSequence* sequence) {
310 ui::LayerAnimator* animator = overlay_widget_->GetLayer()->GetAnimator(); 298 ui::LayerAnimator* animator = overlay_widget_->GetLayer()->GetAnimator();
311 if (animator) 299 if (animator)
312 animator->RemoveObserver(this); 300 animator->RemoveObserver(this);
313 } 301 }
314 302
315 void StickyKeysOverlay::OnLayerAnimationScheduled( 303 void StickyKeysOverlay::OnLayerAnimationScheduled(
316 ui::LayerAnimationSequence* sequence) { 304 ui::LayerAnimationSequence* sequence) {
317 } 305 }
318 306
319 } // namespace ash 307 } // namespace ash
OLDNEW
« no previous file with comments | « ash/sticky_keys/sticky_keys_overlay.h ('k') | ash/sticky_keys/sticky_keys_overlay_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698