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

Side by Side Diff: ui/aura/desktop.cc

Issue 8395046: Allows observers to be notified when layer animations complete. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge with master Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/aura/desktop.h" 5 #include "ui/aura/desktop.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 break; 271 break;
272 } 272 }
273 if (target && target->delegate()) { 273 if (target && target->delegate()) {
274 MouseEvent translated_event(*event, this, target); 274 MouseEvent translated_event(*event, this, target);
275 return ProcessMouseEvent(target, &translated_event); 275 return ProcessMouseEvent(target, &translated_event);
276 } 276 }
277 return false; 277 return false;
278 } 278 }
279 279
280 bool Desktop::DispatchKeyEvent(KeyEvent* event) { 280 bool Desktop::DispatchKeyEvent(KeyEvent* event) {
281 #if !defined(NDEBUG) 281 #if !defined(NDEBUG)
sky 2011/10/27 19:29:19 I don't like this method here. It results in Deskt
282 if (event->type() == ui::ET_KEY_PRESSED && 282 if (event->type() == ui::ET_KEY_PRESSED &&
283 (event->flags() & ui::EF_SHIFT_DOWN) && 283 (event->flags() & ui::EF_SHIFT_DOWN) &&
284 (event->flags() & ui::EF_ALT_DOWN) && 284 (event->flags() & ui::EF_ALT_DOWN) &&
285 event->is_char()) { 285 event->is_char()) {
286 286
287 bool should_rotate = true; 287 bool should_rotate = true;
288 int new_degrees = 0; 288 int new_degrees = 0;
289 switch (event->key_code()) { 289 switch (event->key_code()) {
290 case ui::VKEY_UP: new_degrees = 0; break; 290 case ui::VKEY_UP: new_degrees = 0; break;
291 case ui::VKEY_DOWN: new_degrees = 180; break; 291 case ui::VKEY_DOWN: new_degrees = 180; break;
292 case ui::VKEY_RIGHT: new_degrees = 90; break; 292 case ui::VKEY_RIGHT: new_degrees = 90; break;
293 case ui::VKEY_LEFT: new_degrees = -90; break; 293 case ui::VKEY_LEFT: new_degrees = -90; break;
294 default: should_rotate = false; break; 294 default: should_rotate = false; break;
295 } 295 }
296 296
297 if (should_rotate) { 297 if (should_rotate) {
298 float rotation = 0.0f; 298 float rotation = 0.0f;
299 int degrees = 0; 299 int degrees = 0;
300 const ui::Transform& transform = layer()->GetTargetTransform(); 300 const ui::Transform& transform = layer()->GetTargetTransform();
301 if (ui::InterpolatedTransform::FactorTRS(transform, 301 if (ui::InterpolatedTransform::FactorTRS(transform,
302 NULL, &rotation, NULL)) 302 NULL, &rotation, NULL))
303 degrees = NormalizeAngle(new_degrees - SymmetricRound(rotation)); 303 degrees = NormalizeAngle(new_degrees - SymmetricRound(rotation));
304 304
305 if (degrees != 0) { 305 if (degrees != 0) {
306 layer()->GetAnimator()->set_preemption_strategy( 306 layer()->GetAnimator()->set_preemption_strategy(
307 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); 307 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS);
308 layer()->GetAnimator()->ScheduleAnimationElement( 308 scoped_ptr<ui::LayerAnimationSequence> screen_rotation(
309 new ScreenRotation(degrees)); 309 new ui::LayerAnimationSequence(new ScreenRotation(degrees)));
310 screen_rotation->AddObserver(this);
311 layer()->GetAnimator()->ScheduleAnimation(screen_rotation.release());
310 return true; 312 return true;
311 } 313 }
312 } 314 }
313 } 315 }
314 #endif 316 #endif
315 317
316 if (focused_window_) { 318 if (focused_window_) {
317 KeyEvent translated_event(*event); 319 KeyEvent translated_event(*event);
318 return ProcessKeyEvent(focused_window_, &translated_event); 320 return ProcessKeyEvent(focused_window_, &translated_event);
319 } 321 }
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 base::StringToInt(parts[1], &parsed_height) && parsed_height > 0) { 605 base::StringToInt(parts[1], &parsed_height) && parsed_height > 0) {
604 bounds.set_size(gfx::Size(parsed_width, parsed_height)); 606 bounds.set_size(gfx::Size(parsed_width, parsed_height));
605 } else if (use_fullscreen_host_window_) { 607 } else if (use_fullscreen_host_window_) {
606 bounds = gfx::Rect(DesktopHost::GetNativeDisplaySize()); 608 bounds = gfx::Rect(DesktopHost::GetNativeDisplaySize());
607 } 609 }
608 610
609 return bounds; 611 return bounds;
610 } 612 }
611 613
612 } // namespace aura 614 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698