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 12namespace views { 13namespace { 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. 18const 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 34void 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 51DesktopCursorLoaderUpdaterAuraLinux::DesktopCursorLoaderUpdaterAuraLinux() {} 52 53DesktopCursorLoaderUpdaterAuraLinux::~DesktopCursorLoaderUpdaterAuraLinux() {} 54 55void DesktopCursorLoaderUpdaterAuraLinux::OnCreate( 56 float device_scale_factor, 57 ui::CursorLoader* loader) { 58 LoadImageCursors(device_scale_factor, loader); 59} 60 61void DesktopCursorLoaderUpdaterAuraLinux::OnDisplayUpdated( 62 const gfx::Display& display, 63 ui::CursorLoader* loader) { 64 LoadImageCursors(display.device_scale_factor(), loader); 65} 66 67// static 68scoped_ptr<DesktopCursorLoaderUpdater> DesktopCursorLoaderUpdater::Create() { 69 return scoped_ptr<DesktopCursorLoaderUpdater>( 70 new DesktopCursorLoaderUpdaterAuraLinux).Pass(); 71} 72 73} // namespace views 74