summaryrefslogtreecommitdiff
path: root/libcef/browser/native/cursor_util_mac.mm
blob: c2ed9ac505b1e747903b2015289628880669f9a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright 2023 The Chromium Embedded Framework Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be found
// in the LICENSE file.

#include "libcef/browser/native/cursor_util.h"

#import "base/mac/scoped_nsobject.h"
#import "ui/base/cocoa/cursor_utils.h"

namespace cursor_util {

namespace {

class ScopedCursorHandleImpl : public ScopedCursorHandle {
 public:
  explicit ScopedCursorHandleImpl(NSCursor* native_cursor) {
    if (native_cursor) {
      cursor_.reset([native_cursor retain]);
    }
  }

  cef_cursor_handle_t GetCursorHandle() override { return cursor_.get(); }

 private:
  base::scoped_nsobject<NSCursor> cursor_;
};

}  // namespace

// static
std::unique_ptr<ScopedCursorHandle> ScopedCursorHandle::Create(
    CefRefPtr<CefBrowser> /*browser*/,
    const ui::Cursor& ui_cursor) {
  return std::make_unique<ScopedCursorHandleImpl>(
      ui::GetNativeCursor(ui_cursor));
}

}  // namespace cursor_util