| Flutter Linux Embedder |

fl_key_event.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter 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 "flutter/shell/platform/linux/fl_key_event.h"
6
7 static void dispose_origin_from_gdk_event(gpointer origin) {
8 g_return_if_fail(origin != nullptr);
9 gdk_event_free(reinterpret_cast<GdkEvent*>(origin));
10 }
11
12 FlKeyEvent* fl_key_event_new_from_gdk_event(GdkEvent* event) {
13 g_return_val_if_fail(event != nullptr, nullptr);
14 GdkEventType type = gdk_event_get_event_type(event);
15 g_return_val_if_fail(type == GDK_KEY_PRESS || type == GDK_KEY_RELEASE,
16 nullptr);
17 FlKeyEvent* result = g_new(FlKeyEvent, 1);
18
19 guint16 keycode = 0;
20 gdk_event_get_keycode(event, &keycode);
21 guint keyval = 0;
22 gdk_event_get_keyval(event, &keyval);
23 GdkModifierType state = static_cast<GdkModifierType>(0);
24 gdk_event_get_state(event, &state);
25
26 result->time = gdk_event_get_time(event);
27 result->is_press = type == GDK_KEY_PRESS;
28 result->keycode = keycode;
29 result->keyval = keyval;
30 result->state = state;
31 result->string = g_strdup(event->key.string);
32 result->group = event->key.group;
33 result->origin = event;
34 result->dispose_origin = dispose_origin_from_gdk_event;
35
36 return result;
37 }
38
39 void fl_key_event_dispose(FlKeyEvent* event) {
40 if (event->string != nullptr) {
41 g_free(const_cast<char*>(event->string));
42 }
43 if (event->dispose_origin != nullptr) {
44 event->dispose_origin(event->origin);
45 }
46 g_free(event);
47 }
48
49 FlKeyEvent* fl_key_event_clone(const FlKeyEvent* event) {
50 FlKeyEvent* new_event = g_new(FlKeyEvent, 1);
51 *new_event = *event;
52 new_event->string = g_strdup(event->string);
53 return new_event;
54 }
event
FlKeyEvent * event
Definition: fl_key_channel_responder.cc:118
fl_key_event_new_from_gdk_event
FlKeyEvent * fl_key_event_new_from_gdk_event(GdkEvent *event)
Definition: fl_key_event.cc:12
_FlKeyEvent::origin
gpointer origin
Definition: fl_key_event.h:52
_FlKeyEvent
Definition: fl_key_event.h:31
state
AtkStateType state
Definition: fl_accessible_node.cc:10
_FlKeyEvent::dispose_origin
FlKeyEventDisposeOrigin dispose_origin
Definition: fl_key_event.h:56
fl_key_event_clone
FlKeyEvent * fl_key_event_clone(const FlKeyEvent *event)
Definition: fl_key_event.cc:49
fl_key_event_dispose
void fl_key_event_dispose(FlKeyEvent *event)
Definition: fl_key_event.cc:39
result
GAsyncResult * result
Definition: fl_text_input_plugin.cc:106
dispose_origin_from_gdk_event
static void dispose_origin_from_gdk_event(gpointer origin)
Definition: fl_key_event.cc:7
fl_key_event.h
_FlKeyEvent::string
const char * string
Definition: fl_key_event.h:47