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

Side by Side Diff: components/mus/ws/display_manager.cc

Issue 1677513002: mus Window Server: implement event capture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « components/mus/ws/display_manager.h ('k') | components/mus/ws/display_manager_delegate.h » ('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 "components/mus/ws/display_manager.h" 5 #include "components/mus/ws/display_manager.h"
6 6
7 #include "base/numerics/safe_conversions.h" 7 #include "base/numerics/safe_conversions.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "cc/output/compositor_frame.h" 9 #include "cc/output/compositor_frame.h"
10 #include "cc/output/copy_output_request.h" 10 #include "cc/output/copy_output_request.h"
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 } 228 }
229 229
230 void DefaultDisplayManager::SetViewportSize(const gfx::Size& size) { 230 void DefaultDisplayManager::SetViewportSize(const gfx::Size& size) {
231 platform_window_->SetBounds(gfx::Rect(size)); 231 platform_window_->SetBounds(gfx::Rect(size));
232 } 232 }
233 233
234 void DefaultDisplayManager::SetTitle(const base::string16& title) { 234 void DefaultDisplayManager::SetTitle(const base::string16& title) {
235 platform_window_->SetTitle(title); 235 platform_window_->SetTitle(title);
236 } 236 }
237 237
238 void DefaultDisplayManager::SetCapture() {
239 platform_window_->SetCapture();
240 }
241
242 void DefaultDisplayManager::ReleaseCapture() {
243 platform_window_->ReleaseCapture();
244 }
245
238 void DefaultDisplayManager::SetCursorById(int32_t cursor_id) { 246 void DefaultDisplayManager::SetCursorById(int32_t cursor_id) {
239 #if !defined(OS_ANDROID) 247 #if !defined(OS_ANDROID)
240 // TODO(erg): This still isn't sufficient, and will only use native cursors 248 // TODO(erg): This still isn't sufficient, and will only use native cursors
241 // that chrome would use, not custom image cursors. For that, we should 249 // that chrome would use, not custom image cursors. For that, we should
242 // delegate to the window manager to load images from resource packs. 250 // delegate to the window manager to load images from resource packs.
243 // 251 //
244 // We probably also need to deal with different DPIs. 252 // We probably also need to deal with different DPIs.
245 ui::Cursor cursor(cursor_id); 253 ui::Cursor cursor(cursor_id);
246 cursor_loader_->SetPlatformCursor(&cursor); 254 cursor_loader_->SetPlatformCursor(&cursor);
247 platform_window_->SetCursor(cursor.platform()); 255 platform_window_->SetCursor(cursor.platform());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 } 354 }
347 355
348 void DefaultDisplayManager::OnDamageRect(const gfx::Rect& damaged_region) { 356 void DefaultDisplayManager::OnDamageRect(const gfx::Rect& damaged_region) {
349 dirty_rect_.Union(damaged_region); 357 dirty_rect_.Union(damaged_region);
350 WantToDraw(); 358 WantToDraw();
351 } 359 }
352 360
353 void DefaultDisplayManager::DispatchEvent(ui::Event* event) { 361 void DefaultDisplayManager::DispatchEvent(ui::Event* event) {
354 delegate_->OnEvent(*event); 362 delegate_->OnEvent(*event);
355 363
356 switch (event->type()) {
357 case ui::ET_MOUSE_PRESSED:
358 case ui::ET_TOUCH_PRESSED:
359 platform_window_->SetCapture();
360 break;
361 case ui::ET_MOUSE_RELEASED:
362 case ui::ET_TOUCH_RELEASED:
363 platform_window_->ReleaseCapture();
364 break;
365 default:
366 break;
367 }
368
369 #if defined(USE_X11) 364 #if defined(USE_X11)
370 // We want to emulate the WM_CHAR generation behaviour of Windows. 365 // We want to emulate the WM_CHAR generation behaviour of Windows.
371 // 366 //
372 // On Linux, we've previously inserted characters by having 367 // On Linux, we've previously inserted characters by having
373 // InputMethodAuraLinux take all key down events and send a character event 368 // InputMethodAuraLinux take all key down events and send a character event
374 // to the TextInputClient. This causes a mismatch in code that has to be 369 // to the TextInputClient. This causes a mismatch in code that has to be
375 // shared between Windows and Linux, including blink code. Now that we're 370 // shared between Windows and Linux, including blink code. Now that we're
376 // trying to have one way of doing things, we need to standardize on and 371 // trying to have one way of doing things, we need to standardize on and
377 // emulate Windows character events. 372 // emulate Windows character events.
378 // 373 //
(...skipping 16 matching lines...) Expand all
395 platform_window_->Close(); 390 platform_window_->Close();
396 } 391 }
397 392
398 void DefaultDisplayManager::OnClosed() { 393 void DefaultDisplayManager::OnClosed() {
399 delegate_->OnDisplayClosed(); 394 delegate_->OnDisplayClosed();
400 } 395 }
401 396
402 void DefaultDisplayManager::OnWindowStateChanged( 397 void DefaultDisplayManager::OnWindowStateChanged(
403 ui::PlatformWindowState new_state) {} 398 ui::PlatformWindowState new_state) {}
404 399
405 void DefaultDisplayManager::OnLostCapture() {} 400 void DefaultDisplayManager::OnLostCapture() {
401 delegate_->OnNativeCaptureLost();
402 }
406 403
407 void DefaultDisplayManager::OnAcceleratedWidgetAvailable( 404 void DefaultDisplayManager::OnAcceleratedWidgetAvailable(
408 gfx::AcceleratedWidget widget, 405 gfx::AcceleratedWidget widget,
409 float device_pixel_ratio) { 406 float device_pixel_ratio) {
410 if (widget != gfx::kNullAcceleratedWidget) { 407 if (widget != gfx::kNullAcceleratedWidget) {
411 top_level_display_client_.reset( 408 top_level_display_client_.reset(
412 new TopLevelDisplayClient(widget, gpu_state_, surfaces_state_)); 409 new TopLevelDisplayClient(widget, gpu_state_, surfaces_state_));
413 delegate_->OnTopLevelSurfaceChanged( 410 delegate_->OnTopLevelSurfaceChanged(
414 top_level_display_client_->surface_id()); 411 top_level_display_client_->surface_id());
415 } 412 }
416 UpdateMetrics(metrics_.size_in_pixels.To<gfx::Size>(), device_pixel_ratio); 413 UpdateMetrics(metrics_.size_in_pixels.To<gfx::Size>(), device_pixel_ratio);
417 } 414 }
418 415
419 void DefaultDisplayManager::OnAcceleratedWidgetDestroyed() { 416 void DefaultDisplayManager::OnAcceleratedWidgetDestroyed() {
420 NOTREACHED(); 417 NOTREACHED();
421 } 418 }
422 419
423 void DefaultDisplayManager::OnActivationChanged(bool active) {} 420 void DefaultDisplayManager::OnActivationChanged(bool active) {}
424 421
425 void DefaultDisplayManager::RequestCopyOfOutput( 422 void DefaultDisplayManager::RequestCopyOfOutput(
426 scoped_ptr<cc::CopyOutputRequest> output_request) { 423 scoped_ptr<cc::CopyOutputRequest> output_request) {
427 if (top_level_display_client_) 424 if (top_level_display_client_)
428 top_level_display_client_->RequestCopyOfOutput(std::move(output_request)); 425 top_level_display_client_->RequestCopyOfOutput(std::move(output_request));
429 } 426 }
430 427
431 } // namespace ws 428 } // namespace ws
432 429
433 } // namespace mus 430 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/display_manager.h ('k') | components/mus/ws/display_manager_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698