#include "gtktogglebutton.h"
#include "gtkheaderbar.h"
#include "gtkactionable.h"
+#include "gtkeventcontrollerkey.h"
struct _GtkFontChooserDialogPrivate
{
}
static gboolean
-gtk_font_chooser_dialog_event (GtkWidget *dialog,
- GdkEvent *event)
+dialog_forward_key (GtkEventControllerKey *controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType modifiers,
+ GtkWidget *widget)
{
- GtkFontChooserDialog *fdialog = GTK_FONT_CHOOSER_DIALOG (dialog);
- gboolean handled = FALSE;
+ GtkFontChooserDialog *fdialog = GTK_FONT_CHOOSER_DIALOG (widget);
- if (gdk_event_get_event_type (event) != GDK_KEY_PRESS)
- return GDK_EVENT_PROPAGATE;
-
- handled = GTK_WIDGET_CLASS (gtk_font_chooser_dialog_parent_class)->event (dialog, event);
-
- if (!handled)
- handled = gtk_font_chooser_widget_handle_event (fdialog->priv->fontchooser, (GdkEventKey *)event);
-
- return handled;
+ return gtk_event_controller_key_forward (controller, fdialog->priv->fontchooser);
}
static void
gobject_class->get_property = gtk_font_chooser_dialog_get_property;
gobject_class->set_property = gtk_font_chooser_dialog_set_property;
- widget_class->event = gtk_font_chooser_dialog_event;
widget_class->map = gtk_font_chooser_dialog_map;
_gtk_font_chooser_install_properties (gobject_class);
gtk_widget_class_bind_template_child_private (widget_class, GtkFontChooserDialog, select_button);
gtk_widget_class_bind_template_child_private (widget_class, GtkFontChooserDialog, cancel_button);
gtk_widget_class_bind_template_callback (widget_class, font_activated_cb);
+ gtk_widget_class_bind_template_callback (widget_class, dialog_forward_key);
}
static void
gtk_font_chooser_widget_set_cell_size (fontchooser);
gtk_font_chooser_widget_take_font_desc (fontchooser, NULL);
+
+ gtk_search_entry_set_key_capture_widget (GTK_SEARCH_ENTRY (priv->search_entry),
+ GTK_WIDGET (fontchooser));
}
/**
iface->get_font_map = gtk_font_chooser_widget_get_font_map;
}
-gboolean
-gtk_font_chooser_widget_handle_event (GtkWidget *widget,
- GdkEventKey *key_event)
-{
- GtkFontChooserWidget *fontchooser = GTK_FONT_CHOOSER_WIDGET (widget);
- GtkFontChooserWidgetPrivate *priv = fontchooser->priv;
- GdkEvent *event = (GdkEvent *)key_event;
-
- return gtk_search_entry_handle_event (GTK_SEARCH_ENTRY (priv->search_entry), event);
-}
-
GAction *
gtk_font_chooser_widget_get_tweak_action (GtkWidget *widget)
{
<property name="can-default">1</property>
</object>
</child>
+ <child>
+ <object class="GtkEventControllerKey">
+ <signal name="key-pressed" handler="dialog_forward_key" swapped="no"/>
+ <signal name="key-released" handler="dialog_forward_key" swapped="no"/>
+ </object>
+ </child>
<action-widgets>
<action-widget response="cancel">cancel_button</action-widget>
<action-widget response="ok" default="true">select_button</action-widget>