1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ui/views/widget/desktop_aura/desktop_cursor_loader_updater_auralinux.h" 6 7 #include "ui/aura/window_event_dispatcher.h" 8 #include "ui/base/cursor/cursor_loader.h" 9 #include "ui/base/cursor/cursors_aura.h" 10 #include "ui/gfx/display.h" 11 12 namespace views { 13 namespace { 14 15 // Cursors that we need to supply our own image resources for. This was 16 // generated from webcursor_gtk.cc; any cursor that either was NOTIMPLEMENTED() 17 // or already was implemented with a pixmap is on this list. 18 const int kImageCursorIds[] = { 19 ui::kCursorNorthEastSouthWestResize, 20 ui::kCursorNorthWestSouthEastResize, 21 ui::kCursorVerticalText, 22 ui::kCursorCell, 23 ui::kCursorContextMenu, 24 ui::kCursorAlias, 25 ui::kCursorNoDrop, 26 ui::kCursorCopy, 27 ui::kCursorNotAllowed, 28 ui::kCursorZoomIn, 29 ui::kCursorZoomOut, 30 ui::kCursorGrab, 31 ui::kCursorGrabbing, 32 }; 33 34 void LoadImageCursors(float device_scale_factor, ui::CursorLoader* loader) { 35 int resource_id; 36 gfx::Point point; 37 for (size_t i = 0; i < arraysize(kImageCursorIds); ++i) { 38 bool success = ui::GetCursorDataFor( 39 ui::CURSOR_SET_NORMAL, // Not support custom cursor set. 40 kImageCursorIds[i], 41 device_scale_factor, 42 &resource_id, 43 &point); 44 DCHECK(success); 45 loader->LoadImageCursor(kImageCursorIds[i], resource_id, point); 46 } 47 } 48 49 } // namespace 50 51 DesktopCursorLoaderUpdaterAuraLinux::DesktopCursorLoaderUpdaterAuraLinux() {} 52 53 DesktopCursorLoaderUpdaterAuraLinux::~DesktopCursorLoaderUpdaterAuraLinux() {} 54 55 void DesktopCursorLoaderUpdaterAuraLinux::OnCreate( 56 float device_scale_factor, 57 ui::CursorLoader* loader) { 58 LoadImageCursors(device_scale_factor, loader); 59 } 60 61 void DesktopCursorLoaderUpdaterAuraLinux::OnDisplayUpdated( 62 const gfx::Display& display, 63 ui::CursorLoader* loader) { 64 LoadImageCursors(display.device_scale_factor(), loader); 65 } 66 67 // static 68 scoped_ptr<DesktopCursorLoaderUpdater> DesktopCursorLoaderUpdater::Create() { 69 return scoped_ptr<DesktopCursorLoaderUpdater>( 70 new DesktopCursorLoaderUpdaterAuraLinux).Pass(); 71 } 72 73 } // namespace views 74