Home | History | Annotate | Download | only in desktop_aura
      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