]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkbindings.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkbindings.h
index 0ff74230c4d5d583d2ac671921fb03357a56b4c5..fb911f78bdc48066fe7e90bac527dc55a3f3d1b7 100644 (file)
@@ -1,7 +1,7 @@
 /* GTK - The GIMP Toolkit
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  *
- * GtkBindingSet: Keybinding manager for GtkObjects.
+ * GtkBindingSet: Keybinding manager for GObjects.
  * Copyright (C) 1998 Tim Janik
  *
  * This library is free software; you can redistribute it and/or
  *
  * 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
+ * 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
  */
 
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
 #ifndef __GTK_BINDINGS_H__
 #define __GTK_BINDINGS_H__
 
 
-#include <gdk/gdk.h>
-#include <gtk/gtkobject.h>
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
 
+#include <gdk/gdk.h>
+#include <gtk/gtkenums.h>
 
 G_BEGIN_DECLS
 
-
-/* Binding sets
+typedef struct _GtkBindingSet    GtkBindingSet;
+typedef struct _GtkBindingEntry  GtkBindingEntry;
+typedef struct _GtkBindingSignal GtkBindingSignal;
+typedef struct _GtkBindingArg    GtkBindingArg;
+
+/**
+ * GtkBindingSet:
+ * @set_name: unique name of this binding set
+ * @priority: unused
+ * @widget_path_pspecs: unused
+ * @widget_class_pspecs: unused
+ * @class_branch_pspecs: unused
+ * @entries: the key binding entries in this binding set
+ * @current: implementation detail
+ * @parsed: whether this binding set stems from a CSS file and is reset upon theme changes
+ *
+ * A binding set maintains a list of activatable key bindings.
+ * A single binding set can match multiple types of widgets.
+ * Similar to style contexts, can be matched by any information contained
+ * in a widgets #GtkWidgetPath. When a binding within a set is matched upon
+ * activation, an action signal is emitted on the target widget to carry out
+ * the actual activation.
  */
-
-typedef struct _GtkBindingSet          GtkBindingSet;
-typedef struct _GtkBindingEntry                GtkBindingEntry;
-typedef struct _GtkBindingSignal       GtkBindingSignal;
-typedef struct _GtkBindingArg          GtkBindingArg;
-
 struct _GtkBindingSet
 {
-  gchar                        *set_name;
-  gint                  priority;
-  GSList               *widget_path_pspecs;
-  GSList               *widget_class_pspecs;
-  GSList               *class_branch_pspecs;
-  GtkBindingEntry      *entries;
-  GtkBindingEntry      *current;
-  guint                  parsed : 1; /* From RC content */
+  gchar           *set_name;
+  gint             priority;
+  GSList          *widget_path_pspecs;
+  GSList          *widget_class_pspecs;
+  GSList          *class_branch_pspecs;
+  GtkBindingEntry *entries;
+  GtkBindingEntry *current;
+  guint            parsed : 1;
 };
 
+/**
+ * GtkBindingEntry:
+ * @keyval: key value to match
+ * @modifiers: key modifiers to match
+ * @binding_set: binding set this entry belongs to
+ * @destroyed: implementation detail
+ * @in_emission: implementation detail
+ * @marks_unbound: implementation detail
+ * @set_next: linked list of entries maintained by binding set
+ * @hash_next: implementation detail
+ * @signals: action signals of this entry
+ *
+ * Each key binding element of a binding sets binding list is
+ * represented by a GtkBindingEntry.
+ */
 struct _GtkBindingEntry
 {
-  /* key portion
-   */
-  guint                         keyval;
-  GdkModifierType       modifiers;
-  
-  GtkBindingSet                *binding_set;
-  guint                        destroyed : 1;
-  guint                        in_emission : 1;
-  guint                 marks_unbound : 1;
-  GtkBindingEntry      *set_next;
-  GtkBindingEntry      *hash_next;
-  GtkBindingSignal     *signals;
+  /* key portion */
+  guint             keyval;
+  GdkModifierType   modifiers;
+
+  GtkBindingSet    *binding_set;
+  guint             destroyed     : 1;
+  guint             in_emission   : 1;
+  guint             marks_unbound : 1;
+  GtkBindingEntry  *set_next;
+  GtkBindingEntry  *hash_next;
+  GtkBindingSignal *signals;
 };
 
+/**
+ * GtkBindingArg:
+ * @arg_type: implementation detail
+ *
+ * A #GtkBindingArg holds the data associated with
+ * an argument for a key binding signal emission as
+ * stored in #GtkBindingSignal.
+ */
 struct _GtkBindingArg
 {
-  GType                 arg_type;
+  GType      arg_type;
   union {
-    glong       long_data;
-    gdouble     double_data;
-    gchar      *string_data;
+    glong    long_data;
+    gdouble  double_data;
+    gchar   *string_data;
   } d;
 };
 
+/**
+ * GtkBindingSignal:
+ * @next: implementation detail
+ * @signal_name: the action signal to be emitted
+ * @n_args: number of arguments specified for the signal
+ * @args: the arguments specified for the signal
+ *
+ * <anchor id="keybinding-signals"/>
+ * A GtkBindingSignal stores the necessary information to
+ * activate a widget in response to a key press via a signal
+ * emission.
+ */
 struct _GtkBindingSignal
 {
-  GtkBindingSignal     *next;
-  gchar                *signal_name;
-  guint                         n_args;
-  GtkBindingArg                *args;
+  GtkBindingSignal *next;
+  gchar            *signal_name;
+  guint             n_args;
+  GtkBindingArg    *args;
 };
 
-/* Application-level methods */
-
-GtkBindingSet* gtk_binding_set_new     (const gchar    *set_name);
-GtkBindingSet* gtk_binding_set_by_class(gpointer        object_class);
-GtkBindingSet* gtk_binding_set_find    (const gchar    *set_name);
-gboolean gtk_bindings_activate         (GtkObject      *object,
-                                        guint           keyval,
-                                        GdkModifierType modifiers);
-gboolean gtk_bindings_activate_event    (GtkObject      *object,
-                                        GdkEventKey    *event);
-gboolean gtk_binding_set_activate      (GtkBindingSet  *binding_set,
-                                        guint           keyval,
-                                        GdkModifierType modifiers,
-                                        GtkObject      *object);
-
-#ifndef GTK_DISABLE_DEPRECATED
-#define         gtk_binding_entry_add          gtk_binding_entry_clear
-void    gtk_binding_entry_clear        (GtkBindingSet  *binding_set,
-                                        guint           keyval,
-                                        GdkModifierType modifiers);
-guint   gtk_binding_parse_binding      (GScanner       *scanner);
-#endif /* GTK_DISABLE_DEPRECATED */
-
-void    gtk_binding_entry_skip         (GtkBindingSet  *binding_set,
-                                         guint           keyval,
-                                         GdkModifierType modifiers);
-void    gtk_binding_entry_add_signal   (GtkBindingSet  *binding_set,
-                                         guint           keyval,
-                                         GdkModifierType modifiers,
-                                         const gchar    *signal_name,
-                                         guint           n_args,
-                                         ...);
-void    gtk_binding_entry_add_signall  (GtkBindingSet  *binding_set,
-                                        guint           keyval,
-                                        GdkModifierType modifiers,
-                                        const gchar    *signal_name,
-                                        GSList         *binding_args);
-void    gtk_binding_entry_remove       (GtkBindingSet  *binding_set,
-                                        guint           keyval,
-                                        GdkModifierType modifiers);
-
-void    gtk_binding_set_add_path       (GtkBindingSet  *binding_set,
-                                        GtkPathType     path_type,
-                                        const gchar    *path_pattern,
-                                        GtkPathPriorityType priority);
-
-
-/* Non-public methods */
-
-guint   _gtk_binding_parse_binding     (GScanner       *scanner);
-void     _gtk_binding_reset_parsed      (void);
-void    _gtk_binding_entry_add_signall (GtkBindingSet  *binding_set,
-                                        guint           keyval,
-                                        GdkModifierType modifiers,
-                                        const gchar    *signal_name,
-                                        GSList         *binding_args);
+GtkBindingSet *gtk_binding_set_new           (const gchar         *set_name);
+GtkBindingSet *gtk_binding_set_by_class      (gpointer             object_class);
+GtkBindingSet *gtk_binding_set_find          (const gchar         *set_name);
+
+gboolean       gtk_bindings_activate         (GObject             *object,
+                                              guint                keyval,
+                                              GdkModifierType      modifiers);
+gboolean       gtk_bindings_activate_event   (GObject             *object,
+                                              GdkEventKey         *event);
+gboolean       gtk_binding_set_activate      (GtkBindingSet       *binding_set,
+                                              guint                keyval,
+                                              GdkModifierType      modifiers,
+                                              GObject             *object);
+
+void           gtk_binding_entry_skip        (GtkBindingSet       *binding_set,
+                                              guint                keyval,
+                                              GdkModifierType      modifiers);
+void           gtk_binding_entry_add_signal  (GtkBindingSet       *binding_set,
+                                              guint                keyval,
+                                              GdkModifierType      modifiers,
+                                              const gchar         *signal_name,
+                                              guint                n_args,
+                                              ...);
+void           gtk_binding_entry_add_signall (GtkBindingSet       *binding_set,
+                                              guint                keyval,
+                                              GdkModifierType      modifiers,
+                                              const gchar         *signal_name,
+                                              GSList              *binding_args);
+
+GTokenType     gtk_binding_entry_add_signal_from_string
+                                             (GtkBindingSet       *binding_set,
+                                              const gchar         *signal_desc);
+
+void           gtk_binding_entry_remove      (GtkBindingSet       *binding_set,
+                                              guint                keyval,
+                                              GdkModifierType      modifiers);
+
+GDK_DEPRECATED_IN_3_0
+void           gtk_binding_set_add_path      (GtkBindingSet       *binding_set,
+                                              GtkPathType          path_type,
+                                              const gchar         *path_pattern,
+                                              GtkPathPriorityType  priority);
 
 G_END_DECLS