markspage: port to GTK 4

This commit is contained in:
Christian Hergert
2021-10-01 10:54:47 -07:00
parent b81457c0ea
commit ee8cfa6f3b

View File

@ -64,19 +64,21 @@ static GParamSpec *properties [N_PROPS];
G_DEFINE_TYPE_WITH_PRIVATE (SysprofMarksPage, sysprof_marks_page, SYSPROF_TYPE_PAGE) G_DEFINE_TYPE_WITH_PRIVATE (SysprofMarksPage, sysprof_marks_page, SYSPROF_TYPE_PAGE)
static gboolean static gboolean
sysprof_marks_page_tree_view_key_press_event_cb (SysprofMarksPage *self, sysprof_marks_page_tree_view_key_press_event_cb (SysprofMarksPage *self,
const GdkEventKey *key, guint keyval,
GtkTreeView *tree_view) guint keycode,
GdkModifierType state,
GtkEventControllerKey *controller)
{ {
SysprofMarksPagePrivate *priv = sysprof_marks_page_get_instance_private (self); SysprofMarksPagePrivate *priv = sysprof_marks_page_get_instance_private (self);
gint dir = 0; gint dir = 0;
g_assert (SYSPROF_MARKS_PAGE (self)); g_assert (SYSPROF_MARKS_PAGE (self));
g_assert (key != NULL); g_assert (GTK_IS_EVENT_CONTROLLER_KEY (controller));
if (key->state == 0) if ((state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK|GDK_ALT_MASK)) == 0)
{ {
switch (key->keyval) switch (keyval)
{ {
case GDK_KEY_Left: case GDK_KEY_Left:
dir = -1; dir = -1;
@ -536,6 +538,7 @@ static void
sysprof_marks_page_init (SysprofMarksPage *self) sysprof_marks_page_init (SysprofMarksPage *self)
{ {
SysprofMarksPagePrivate *priv = sysprof_marks_page_get_instance_private (self); SysprofMarksPagePrivate *priv = sysprof_marks_page_get_instance_private (self);
GtkEventController *controller;
priv->kind = SYSPROF_MARKS_MODEL_MARKS; priv->kind = SYSPROF_MARKS_MODEL_MARKS;
@ -544,11 +547,14 @@ sysprof_marks_page_init (SysprofMarksPage *self)
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (priv->tree_view), gtk_tree_selection_set_mode (gtk_tree_view_get_selection (priv->tree_view),
GTK_SELECTION_MULTIPLE); GTK_SELECTION_MULTIPLE);
g_signal_connect_object (priv->tree_view, controller = gtk_event_controller_key_new ();
"key-press-event", gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
g_signal_connect_object (controller,
"key-pressed",
G_CALLBACK (sysprof_marks_page_tree_view_key_press_event_cb), G_CALLBACK (sysprof_marks_page_tree_view_key_press_event_cb),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
gtk_widget_add_controller (GTK_WIDGET (self), controller);
g_signal_connect_object (priv->tree_view, g_signal_connect_object (priv->tree_view,
"row-activated", "row-activated",