[gtk/wip/matthiasc/popup2: 335/353] root: Add api for mnemonics



commit 989de7c8f5526bad56eb0c944058a816ac003ef7
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Mar 3 22:23:49 2019 -0500

    root: Add api for mnemonics
    
    Copy the add/remove_mnemonic and activate_key apis
    from GtkWindow.

 gtk/gtkroot.c        | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 gtk/gtkroot.h        | 17 +++++++++++++++++
 gtk/gtkrootprivate.h |  3 +++
 3 files changed, 73 insertions(+)
---
diff --git a/gtk/gtkroot.c b/gtk/gtkroot.c
index d5f287fc4d..ea1edef293 100644
--- a/gtk/gtkroot.c
+++ b/gtk/gtkroot.c
@@ -68,6 +68,27 @@ gtk_root_default_check_resize (GtkRoot *self)
 {
 }
 
+static void
+gtk_root_default_add_mnemonic (GtkRoot   *self,
+                               guint      keyval,
+                               GtkWidget *target)
+{
+}
+
+static void
+gtk_root_default_remove_mnemonic (GtkRoot   *self,
+                                  guint      keyval,
+                                  GtkWidget *target)
+{
+}
+
+static gboolean
+gtk_root_default_activate_key (GtkRoot     *self,
+                               GdkEventKey *event)
+{
+  return FALSE;
+}
+
 static void
 gtk_root_default_init (GtkRootInterface *iface)
 {
@@ -75,6 +96,9 @@ gtk_root_default_init (GtkRootInterface *iface)
   iface->get_renderer = gtk_root_default_get_renderer;
   iface->get_surface_transform = gtk_root_default_get_surface_transform;
   iface->check_resize = gtk_root_default_check_resize;
+  iface->add_mnemonic = gtk_root_default_add_mnemonic;
+  iface->remove_mnemonic = gtk_root_default_remove_mnemonic;
+  iface->activate_key = gtk_root_default_activate_key;
 
   g_object_interface_install_property (iface,
       g_param_spec_object ("focus-widget",
@@ -425,3 +449,32 @@ gtk_root_queue_restyle (GtkRoot *root)
   gtk_root_set_restyle_pending (root, TRUE);
   gtk_root_start_layout_phase (root);
 }
+
+void
+gtk_root_add_mnemonic (GtkRoot   *root,
+                       guint      keyval,
+                       GtkWidget *target)
+{
+  g_return_if_fail (GTK_ROOT (root));
+
+  GTK_ROOT_GET_IFACE (root)->add_mnemonic (root, keyval, target); 
+}
+
+void
+gtk_root_remove_mnemonic (GtkRoot   *root,
+                          guint      keyval,
+                          GtkWidget *target)
+{
+  g_return_if_fail (GTK_ROOT (root));
+
+  GTK_ROOT_GET_IFACE (root)->remove_mnemonic (root, keyval, target); 
+}
+
+gboolean
+gtk_root_activate_key (GtkRoot     *root,
+                       GdkEventKey *event)
+{
+  g_return_val_if_fail (GTK_ROOT (root), FALSE);
+
+  return GTK_ROOT_GET_IFACE (root)->activate_key (root, event); 
+}
diff --git a/gtk/gtkroot.h b/gtk/gtkroot.h
index a3935efff1..77ad31f7e5 100644
--- a/gtk/gtkroot.h
+++ b/gtk/gtkroot.h
@@ -52,6 +52,15 @@ struct _GtkRootInterface
                                                          int                    *x,
                                                          int                    *y);
   void                  (* check_resize)                (GtkRoot                *root);
+
+  void                  (* add_mnemonic)                (GtkRoot                *root,
+                                                         guint                   keyval,
+                                                         GtkWidget              *target);
+  void                  (* remove_mnemonic)             (GtkRoot                *root,
+                                                         guint                   keyval,
+                                                         GtkWidget              *target);
+  gboolean              (* activate_key)                (GtkRoot                *root,
+                                                         GdkEventKey            *event);
 };
 
 GDK_AVAILABLE_IN_ALL
@@ -73,6 +82,14 @@ GtkWidget * gtk_root_get_default (GtkRoot   *self);
 GDK_AVAILABLE_IN_ALL
 gboolean    gtk_root_activate_default (GtkRoot *self);
 
+GDK_AVAILABLE_IN_ALL
+void        gtk_root_add_mnemonic      (GtkRoot   *root,
+                                        guint      keyval,
+                                        GtkWidget *target);
+GDK_AVAILABLE_IN_ALL
+void        gtk_root_remove_mnemonic   (GtkRoot   *root,
+                                        guint      keyval,
+                                        GtkWidget *target);
 
 G_END_DECLS
 
diff --git a/gtk/gtkrootprivate.h b/gtk/gtkrootprivate.h
index e529e1c7c7..af3b35c82f 100644
--- a/gtk/gtkrootprivate.h
+++ b/gtk/gtkrootprivate.h
@@ -16,6 +16,9 @@ void                    gtk_root_queue_restyle          (GtkRoot
 void                    gtk_root_start_layout_phase     (GtkRoot                *self); 
 void                    gtk_root_stop_layout_phase      (GtkRoot                *self); 
 
+gboolean                gtk_root_activate_key           (GtkRoot                *self,
+                                                         GdkEventKey            *event);
+
 enum {
   GTK_ROOT_PROP_FOCUS_WIDGET,
   GTK_ROOT_PROP_DEFAULT_WIDGET,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]