Flutter Engine
The Flutter Engine
Classes | Typedefs | Functions
fl_key_event.h File Reference
#include <gdk/gdk.h>

Go to the source code of this file.

Classes

struct  _FlKeyEvent
 

Typedefs

typedef struct _FlKeyEvent FlKeyEvent
 

Functions

FlKeyEventfl_key_event_new_from_gdk_event (GdkEvent *event)
 
void fl_key_event_dispose (FlKeyEvent *event)
 
FlKeyEventfl_key_event_clone (const FlKeyEvent *source)
 

Typedef Documentation

◆ FlKeyEvent

typedef struct _FlKeyEvent FlKeyEvent

FlKeyEvent: A struct that stores information from GdkEvent.

This is a class only used within the GTK embedding, created by FlView and consumed by FlKeyboardManager. It is not sent to the embedder.

This object contains information from GdkEvent as well as an origin event object, so that Flutter can create an event object in unit tests even after migrating to GDK 4.0 which stops supporting creating GdkEvent.

Function Documentation

◆ fl_key_event_clone()

FlKeyEvent * fl_key_event_clone ( const FlKeyEvent source)

Definition at line 39 of file fl_key_event.cc.

39 {
40 FlKeyEvent* new_event = g_new(FlKeyEvent, 1);
41 *new_event = *event;
42 return new_event;
43}
FlKeyEvent * event

◆ fl_key_event_dispose()

void fl_key_event_dispose ( FlKeyEvent event)

fl_key_event_dispose: @event: the event to dispose.

Properly disposes the content of event and then the pointer.

Definition at line 32 of file fl_key_event.cc.

32 {
33 if (event->origin != nullptr) {
34 gdk_event_free(event->origin);
35 }
36 g_free(event);
37}
GdkEvent * origin
Definition: fl_key_event.h:36

◆ fl_key_event_new_from_gdk_event()

FlKeyEvent * fl_key_event_new_from_gdk_event ( GdkEvent *  event)

fl_key_event_new_from_gdk_event: @event: the #GdkEvent this FlKeyEvent is based on. The event must be a #GdkEventKey, and will be destroyed by fl_key_event_dispose.

Create a new FlKeyEvent based on a #GdkEvent.

Returns: a new FlKeyEvent. Must be freed with fl_key_event_dispose.

Definition at line 7 of file fl_key_event.cc.

7 {
8 g_return_val_if_fail(event != nullptr, nullptr);
9 GdkEventType type = gdk_event_get_event_type(event);
10 g_return_val_if_fail(type == GDK_KEY_PRESS || type == GDK_KEY_RELEASE,
11 nullptr);
12 FlKeyEvent* result = g_new(FlKeyEvent, 1);
13
14 guint16 keycode = 0;
15 gdk_event_get_keycode(event, &keycode);
16 guint keyval = 0;
17 gdk_event_get_keyval(event, &keyval);
18 GdkModifierType state = static_cast<GdkModifierType>(0);
19 gdk_event_get_state(event, &state);
20
21 result->time = gdk_event_get_time(event);
22 result->is_press = type == GDK_KEY_PRESS;
23 result->keycode = keycode;
24 result->keyval = keyval;
25 result->state = state;
26 result->group = event->key.group;
27 result->origin = event;
28
29 return result;
30}
GLenum type
AtkStateType state
GAsyncResult * result