[gtk+] fontchooser: Add global keynav
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] fontchooser: Add global keynav
- Date: Wed, 27 Dec 2017 22:29:46 +0000 (UTC)
commit e90787d9756c54d3209599819a5be4fed504a83b
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Dec 27 17:21:30 2017 -0500
fontchooser: Add global keynav
Starting to type should focus the search entry and start
a search.
gtk/gtkfontchooserdialog.c | 18 ++++++++++++++++++
gtk/gtkfontchooserwidget.c | 12 ++++++++++++
gtk/gtkfontchooserwidgetprivate.h | 30 ++++++++++++++++++++++++++++++
3 files changed, 60 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkfontchooserdialog.c b/gtk/gtkfontchooserdialog.c
index c981505..83bc307 100644
--- a/gtk/gtkfontchooserdialog.c
+++ b/gtk/gtkfontchooserdialog.c
@@ -26,6 +26,7 @@
#include "gtkfontchooserdialog.h"
#include "gtkfontchooser.h"
#include "gtkfontchooserwidget.h"
+#include "gtkfontchooserwidgetprivate.h"
#include "gtkfontchooserutils.h"
#include "gtkbox.h"
#include "gtkintl.h"
@@ -120,6 +121,21 @@ font_activated_cb (GtkFontChooser *fontchooser,
gtk_dialog_response (dialog, GTK_RESPONSE_OK);
}
+static gboolean
+gtk_font_chooser_dialog_key_press_event (GtkWidget *dialog,
+ GdkEventKey *event)
+{
+ GtkFontChooserDialog *fdialog = GTK_FONT_CHOOSER_DIALOG (dialog);
+ gboolean handled = FALSE;
+
+ handled = GTK_WIDGET_CLASS (gtk_font_chooser_dialog_parent_class)->key_press_event (dialog, event);
+
+ if (!handled)
+ handled = gtk_font_chooser_widget_handle_event (fdialog->priv->fontchooser, event);
+
+ return handled;
+}
+
static void
gtk_font_chooser_dialog_class_init (GtkFontChooserDialogClass *klass)
{
@@ -129,6 +145,8 @@ gtk_font_chooser_dialog_class_init (GtkFontChooserDialogClass *klass)
gobject_class->get_property = gtk_font_chooser_dialog_get_property;
gobject_class->set_property = gtk_font_chooser_dialog_set_property;
+ widget_class->key_press_event = gtk_font_chooser_dialog_key_press_event;
+
_gtk_font_chooser_install_properties (gobject_class);
/* Bind class to template
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c
index 5e5d582..0335531 100644
--- a/gtk/gtkfontchooserwidget.c
+++ b/gtk/gtkfontchooserwidget.c
@@ -24,6 +24,7 @@
#include <atk/atk.h>
#include "gtkfontchooserwidget.h"
+#include "gtkfontchooserwidgetprivate.h"
#include "gtkadjustment.h"
#include "gtkbuildable.h"
@@ -1401,3 +1402,14 @@ gtk_font_chooser_widget_iface_init (GtkFontChooserIface *iface)
iface->set_font_map = gtk_font_chooser_widget_set_font_map;
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);
+}
diff --git a/gtk/gtkfontchooserwidgetprivate.h b/gtk/gtkfontchooserwidgetprivate.h
new file mode 100644
index 0000000..f51447e
--- /dev/null
+++ b/gtk/gtkfontchooserwidgetprivate.h
@@ -0,0 +1,30 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GTK_FONT_CHOOSER_WIDGET_PRIVATE_H__
+#define __GTK_FONT_CHOOSER_WIDGET_PRIVATE_H__
+
+#include "gtkfontchooserwidget.h"
+
+G_BEGIN_DECLS
+
+gboolean gtk_font_chooser_widget_handle_event (GtkWidget *widget,
+ GdkEventKey *event);
+
+G_END_DECLS
+
+#endif /* __GTK_FONT_CHOOSER_WIDGET_PRIVATE_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]