Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_mouse_cursor_handler.cc File Reference

Go to the source code of this file.

Classes

struct  _FlMouseCursorHandler
 

Enumerations

enum  {
  SIGNAL_CURSOR_CHANGED ,
  LAST_SIGNAL
}
 

Functions

static bool define_system_cursor (GHashTable *table, const gchar *key, const gchar *value)
 
static void populate_system_cursor_table (GHashTable *table)
 
static void activate_system_cursor (const gchar *kind, gpointer user_data)
 
static void fl_mouse_cursor_handler_dispose (GObject *object)
 
static void fl_mouse_cursor_handler_class_init (FlMouseCursorHandlerClass *klass)
 
static void fl_mouse_cursor_handler_init (FlMouseCursorHandler *self)
 
FlMouseCursorHandler * fl_mouse_cursor_handler_new (FlBinaryMessenger *messenger)
 
const gchar * fl_mouse_cursor_handler_get_cursor_name (FlMouseCursorHandler *self)
 

Variables

static constexpr char kFallbackCursor [] = "default"
 
static guint fl_mouse_cursor_handler_signals [LAST_SIGNAL]
 
static FlMouseCursorChannelVTable mouse_cursor_vtable
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
SIGNAL_CURSOR_CHANGED 
LAST_SIGNAL 

Definition at line 24 of file fl_mouse_cursor_handler.cc.

Function Documentation

◆ activate_system_cursor()

static void activate_system_cursor ( const gchar *  kind,
gpointer  user_data 
)
static

Definition at line 86 of file fl_mouse_cursor_handler.cc.

86 {
87 FlMouseCursorHandler* self = FL_MOUSE_CURSOR_HANDLER(user_data);
88
89 if (self->system_cursor_table == nullptr) {
90 self->system_cursor_table = g_hash_table_new(g_str_hash, g_str_equal);
91 populate_system_cursor_table(self->system_cursor_table);
92 }
93
94 const gchar* cursor_name =
95 kind != nullptr ? reinterpret_cast<const gchar*>(g_hash_table_lookup(
96 self->system_cursor_table, kind))
97 : nullptr;
98 if (cursor_name == nullptr) {
99 cursor_name = kFallbackCursor;
100 }
101
102 g_free(self->cursor_name);
103 self->cursor_name = g_strdup(cursor_name);
104
106 0);
107}
static void populate_system_cursor_table(GHashTable *table)
static constexpr char kFallbackCursor[]
static guint fl_mouse_cursor_handler_signals[LAST_SIGNAL]

References fl_mouse_cursor_handler_signals, kFallbackCursor, populate_system_cursor_table(), self, SIGNAL_CURSOR_CHANGED, and user_data.

◆ define_system_cursor()

static bool define_system_cursor ( GHashTable *  table,
const gchar *  key,
const gchar *  value 
)
static

Definition at line 33 of file fl_mouse_cursor_handler.cc.

35 {
37 table, reinterpret_cast<gpointer>(const_cast<gchar*>(key)),
38 reinterpret_cast<gpointer>(const_cast<gchar*>(value)));
39}
g_hash_table_insert(self->handlers, g_strdup(channel), handler_new(handler, user_data, destroy_notify))

References g_hash_table_insert(), key, and value.

Referenced by populate_system_cursor_table().

◆ fl_mouse_cursor_handler_class_init()

static void fl_mouse_cursor_handler_class_init ( FlMouseCursorHandlerClass *  klass)
static

Definition at line 119 of file fl_mouse_cursor_handler.cc.

120 {
121 G_OBJECT_CLASS(klass)->dispose = fl_mouse_cursor_handler_dispose;
122
124 g_signal_new("cursor-changed", fl_mouse_cursor_handler_get_type(),
125 G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
126}
static void fl_mouse_cursor_handler_dispose(GObject *object)

References fl_mouse_cursor_handler_dispose(), fl_mouse_cursor_handler_signals, and SIGNAL_CURSOR_CHANGED.

◆ fl_mouse_cursor_handler_dispose()

static void fl_mouse_cursor_handler_dispose ( GObject *  object)
static

Definition at line 109 of file fl_mouse_cursor_handler.cc.

109 {
110 FlMouseCursorHandler* self = FL_MOUSE_CURSOR_HANDLER(object);
111
112 g_clear_object(&self->channel);
113 g_clear_pointer(&self->system_cursor_table, g_hash_table_unref);
114 g_clear_pointer(&self->cursor_name, g_free);
115
116 G_OBJECT_CLASS(fl_mouse_cursor_handler_parent_class)->dispose(object);
117}

References self.

Referenced by fl_mouse_cursor_handler_class_init().

◆ fl_mouse_cursor_handler_get_cursor_name()

const gchar * fl_mouse_cursor_handler_get_cursor_name ( FlMouseCursorHandler *  handler)

fl_mouse_cursor_handler_get_cursor_name: @handler: an #FlMouseCursorHandler.

Get the name of the current mouse cursor.

Returns: a mouse cursor name.

Definition at line 149 of file fl_mouse_cursor_handler.cc.

150 {
151 g_return_val_if_fail(FL_IS_MOUSE_CURSOR_HANDLER(self), nullptr);
152 return self->cursor_name;
153}

References self.

Referenced by cursor_changed_cb(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ fl_mouse_cursor_handler_init()

static void fl_mouse_cursor_handler_init ( FlMouseCursorHandler *  self)
static

Definition at line 128 of file fl_mouse_cursor_handler.cc.

128 {
129 self->cursor_name = g_strdup("");
130}

References self.

◆ fl_mouse_cursor_handler_new()

FlMouseCursorHandler * fl_mouse_cursor_handler_new ( FlBinaryMessenger *  messenger)

FlMouseCursorHandler:

#FlMouseCursorHandler is a mouse_cursor channel that implements the shell side of SystemChannels.mouseCursor from the Flutter services library. fl_mouse_cursor_handler_new: @messenger: an #FlBinaryMessenger.

Creates a new handler that implements SystemChannels.mouseCursor from the Flutter services library.

Returns: a new #FlMouseCursorHandler.

Definition at line 136 of file fl_mouse_cursor_handler.cc.

137 {
138 g_return_val_if_fail(FL_IS_BINARY_MESSENGER(messenger), nullptr);
139
140 FlMouseCursorHandler* self = FL_MOUSE_CURSOR_HANDLER(
141 g_object_new(fl_mouse_cursor_handler_get_type(), nullptr));
142
143 self->channel =
145
146 return self;
147}
FlMouseCursorChannel * fl_mouse_cursor_channel_new(FlBinaryMessenger *messenger, FlMouseCursorChannelVTable *vtable, gpointer user_data)
static FlMouseCursorChannelVTable mouse_cursor_vtable

References fl_mouse_cursor_channel_new(), mouse_cursor_vtable, and self.

Referenced by fl_engine_new_full(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ populate_system_cursor_table()

static void populate_system_cursor_table ( GHashTable *  table)
static

Definition at line 45 of file fl_mouse_cursor_handler.cc.

45 {
46 // The following mapping must be kept in sync with Flutter framework's
47 // mouse_cursor.dart.
48 define_system_cursor(table, "alias", "alias");
49 define_system_cursor(table, "allScroll", "all-scroll");
50 define_system_cursor(table, "basic", "default");
51 define_system_cursor(table, "cell", "cell");
52 define_system_cursor(table, "click", "pointer");
53 define_system_cursor(table, "contextMenu", "context-menu");
54 define_system_cursor(table, "copy", "copy");
55 define_system_cursor(table, "forbidden", "not-allowed");
56 define_system_cursor(table, "grab", "grab");
57 define_system_cursor(table, "grabbing", "grabbing");
58 define_system_cursor(table, "help", "help");
59 define_system_cursor(table, "move", "move");
60 define_system_cursor(table, "none", "none");
61 define_system_cursor(table, "noDrop", "no-drop");
62 define_system_cursor(table, "precise", "crosshair");
63 define_system_cursor(table, "progress", "progress");
64 define_system_cursor(table, "text", "text");
65 define_system_cursor(table, "resizeColumn", "col-resize");
66 define_system_cursor(table, "resizeDown", "s-resize");
67 define_system_cursor(table, "resizeDownLeft", "sw-resize");
68 define_system_cursor(table, "resizeDownRight", "se-resize");
69 define_system_cursor(table, "resizeLeft", "w-resize");
70 define_system_cursor(table, "resizeLeftRight", "ew-resize");
71 define_system_cursor(table, "resizeRight", "e-resize");
72 define_system_cursor(table, "resizeRow", "row-resize");
73 define_system_cursor(table, "resizeUp", "n-resize");
74 define_system_cursor(table, "resizeUpDown", "ns-resize");
75 define_system_cursor(table, "resizeUpLeft", "nw-resize");
76 define_system_cursor(table, "resizeUpRight", "ne-resize");
77 define_system_cursor(table, "resizeUpLeftDownRight", "nwse-resize");
78 define_system_cursor(table, "resizeUpRightDownLeft", "nesw-resize");
79 define_system_cursor(table, "verticalText", "vertical-text");
80 define_system_cursor(table, "wait", "wait");
81 define_system_cursor(table, "zoomIn", "zoom-in");
82 define_system_cursor(table, "zoomOut", "zoom-out");
83}
static bool define_system_cursor(GHashTable *table, const gchar *key, const gchar *value)

References define_system_cursor().

Referenced by activate_system_cursor().

Variable Documentation

◆ fl_mouse_cursor_handler_signals

guint fl_mouse_cursor_handler_signals[LAST_SIGNAL]
static

◆ kFallbackCursor

constexpr char kFallbackCursor[] = "default"
staticconstexpr

Definition at line 11 of file fl_mouse_cursor_handler.cc.

Referenced by activate_system_cursor().

◆ mouse_cursor_vtable

FlMouseCursorChannelVTable mouse_cursor_vtable
static
Initial value:
= {
.activate_system_cursor = activate_system_cursor,
}
static void activate_system_cursor(const gchar *kind, gpointer user_data)

Definition at line 132 of file fl_mouse_cursor_handler.cc.

132 {
133 .activate_system_cursor = activate_system_cursor,
134};

Referenced by fl_mouse_cursor_handler_new().