]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkwidget.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkwidget.h
index 8a566df12b76e8683afd8c9bbf354729ee779ade..bdf8e5e607f16bb4bd371c3e4e661b4846a7b540 100644 (file)
@@ -12,9 +12,7 @@
  * 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/.
  */
 
+#ifndef __GTK_WIDGET_H__
+#define __GTK_WIDGET_H__
+
 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
 #error "Only <gtk/gtk.h> can be included directly."
 #endif
 
-#ifndef __GTK_WIDGET_H__
-#define __GTK_WIDGET_H__
-
 #include <gdk/gdk.h>
 #include <gtk/gtkaccelgroup.h>
-#include <gtk/gtkadjustment.h>
-#include <gtk/gtkstyle.h>
-#include <gtk/gtksettings.h>
+#include <gtk/gtkborder.h>
+#include <gtk/gtktypes.h>
 #include <atk/atk.h>
 
 G_BEGIN_DECLS
@@ -59,17 +56,10 @@ typedef enum
 
 #define GTK_TYPE_REQUISITION              (gtk_requisition_get_type ())
 
-/* forward declaration to avoid excessive includes (and concurrent includes)
- */
-typedef struct _GtkRequisition    GtkRequisition;
-typedef struct _GtkSelectionData   GtkSelectionData;
-typedef struct _GtkWidgetPrivate   GtkWidgetPrivate;
-typedef struct _GtkWidgetClass    GtkWidgetClass;
-typedef struct _GtkWidgetAuxInfo   GtkWidgetAuxInfo;
-typedef struct _GtkClipboard      GtkClipboard;
-typedef struct _GtkTooltip         GtkTooltip;
-typedef struct _GtkWindow          GtkWindow;
-
+typedef struct _GtkWidgetPrivate       GtkWidgetPrivate;
+typedef struct _GtkWidgetClass        GtkWidgetClass;
+typedef struct _GtkWidgetClassPrivate  GtkWidgetClassPrivate;
+typedef struct _GtkWidgetAuxInfo       GtkWidgetAuxInfo;
 
 /**
  * GtkAllocation:
@@ -88,7 +78,7 @@ typedef       GdkRectangle       GtkAllocation;
 /**
  * GtkCallback:
  * @widget: the widget to operate on
- * @data: user-supplied data
+ * @data: (closure): user-supplied data
  *
  * The type of the callback functions used for e.g. iterating over
  * the children of a container, see gtk_container_foreach().
@@ -96,6 +86,23 @@ typedef      GdkRectangle       GtkAllocation;
 typedef void    (*GtkCallback)     (GtkWidget        *widget,
                                    gpointer          data);
 
+/**
+ * GtkTickCallback:
+ * @widget: the widget
+ * @frame_clock: the frame clock for the widget (same as calling gtk_widget_get_frame_clock())
+ * @user_data: user data passed to gtk_widget_add_tick_callback().
+ *
+ * Callback type for adding a function to update animations. See gtk_widget_add_tick_callback().
+ *
+ * Returns: %G_SOURCE_CONTINUE if the tick callback should continue to be called,
+ *  %G_SOURCE_REMOVE if the tick callback should be removed.
+ *
+ * Since: 3.8
+ */
+typedef gboolean (*GtkTickCallback) (GtkWidget     *widget,
+                                     GdkFrameClock *frame_clock,
+                                     gpointer       user_data);
+
 /**
  * GtkRequisition:
  * @width: the widget's desired width
@@ -136,12 +143,15 @@ struct _GtkWidget
  *   %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT mode.
  *   %GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH means the widget prefers to have
  *   #GtkWidgetClass.get_preferred_width() called and then
- *   #GtkWidgetClass.get_preferred_height_for_width() and is the default
- *   return for unimplemented cases.
- *   However it's important to note (as described below) that any widget
- *   which trades height-for-width must respond properly to both
- *   #GtkSizeRequestModes since it might be queried in either orientation
- *   by its parent container.
+ *   #GtkWidgetClass.get_preferred_height_for_width().
+ *   %GTK_SIZE_REQUEST_CONSTANT_SIZE disables any height-for-width or
+ *   width-for-height geometry management for a said widget and is the
+ *   default return.
+ *   It's important to note (as described below) that any widget
+ *   which trades height-for-width or width-for-height must respond properly 
+ *   to both of the virtual methods #GtkWidgetClass.get_preferred_height_for_width()
+ *   and #GtkWidgetClass.get_preferred_width_for_height() since it might be 
+ *   queried in either #GtkSizeRequestMode by its parent container.
  * @get_preferred_height: This is called by containers to obtain the minimum
  *   and natural height of a widget. A widget that does not actually trade
  *   any height for width or width for height only has to implement these
@@ -167,7 +177,7 @@ struct _GtkWidget
  *   method it is possible for a #GtkLabel to tell its parent how much height
  *   would be required if the label were to be allocated a said width.
  * @adjust_size_request: Convert an initial size request from a widget's
- *   #GtkSizeRequest virtual method implementations into a size request to
+ *   #GtkSizeRequestMode virtual method implementations into a size request to
  *   be used by parent containers in laying out the widget.
  *   adjust_size_request adjusts <emphasis>from</emphasis> a child widget's
  *   original request <emphasis>to</emphasis> what a parent container should
@@ -223,6 +233,8 @@ struct _GtkWidgetClass
                                GtkAllocation    *allocation);
   void (* state_changed)       (GtkWidget        *widget,
                                GtkStateType      previous_state);
+  void (* state_flags_changed) (GtkWidget        *widget,
+                               GtkStateFlags     previous_state_flags);
   void (* parent_set)         (GtkWidget        *widget,
                                GtkWidget        *previous_parent);
   void (* hierarchy_changed)   (GtkWidget        *widget,
@@ -234,7 +246,7 @@ struct _GtkWidgetClass
   void (* grab_notify)         (GtkWidget        *widget,
                                gboolean          was_grabbed);
   void (* child_notify)        (GtkWidget       *widget,
-                               GParamSpec       *pspec);
+                               GParamSpec       *child_property);
   gboolean (* draw)           (GtkWidget        *widget,
                                 cairo_t          *cr);
 
@@ -318,10 +330,6 @@ struct _GtkWidgetClass
                                         GdkEventProximity   *event);
   gboolean (* visibility_notify_event) (GtkWidget           *widget,
                                         GdkEventVisibility  *event);
-  gboolean (* client_event)            (GtkWidget           *widget,
-                                        GdkEventClient      *event);
-  gboolean (* no_expose_event)         (GtkWidget           *widget,
-                                        GdkEventAny         *event);
   gboolean (* window_state_event)      (GtkWidget           *widget,
                                         GdkEventWindowState *event);
   gboolean (* damage_event)             (GtkWidget           *widget,
@@ -372,6 +380,9 @@ struct _GtkWidgetClass
                                    GtkSelectionData   *selection_data,
                                    guint               info,
                                    guint               time_);
+  gboolean (* drag_failed)         (GtkWidget          *widget,
+                                    GdkDragContext     *context,
+                                    GtkDragResult       result);
 
   /* Signals used only for keybindings */
   gboolean (* popup_menu)          (GtkWidget          *widget);
@@ -412,21 +423,27 @@ struct _GtkWidgetClass
                                            gint              *natural_size);
   void         (* adjust_size_allocation) (GtkWidget         *widget,
                                            GtkOrientation     orientation,
+                                           gint              *minimum_size,
                                            gint              *natural_size,
                                            gint              *allocated_pos,
                                            gint              *allocated_size);
 
+  void         (* style_updated)          (GtkWidget *widget);
+
+  gboolean     (* touch_event)            (GtkWidget     *widget,
+                                           GdkEventTouch *event);
+
   /*< private >*/
 
+  GtkWidgetClassPrivate *priv;
+
   /* Padding for future expansion */
-  void (*_gtk_reserved1) (void);
   void (*_gtk_reserved2) (void);
   void (*_gtk_reserved3) (void);
   void (*_gtk_reserved4) (void);
   void (*_gtk_reserved5) (void);
   void (*_gtk_reserved6) (void);
   void (*_gtk_reserved7) (void);
-  void (*_gtk_reserved8) (void);
 };
 
 struct _GtkWidgetAuxInfo
@@ -470,13 +487,15 @@ void         gtk_widget_queue_draw_area     (GtkWidget           *widget,
                                           gint                 width,
                                           gint                 height);
 void      gtk_widget_queue_draw_region   (GtkWidget           *widget,
-                                           cairo_region_t      *region);
+                                           const cairo_region_t*region);
 void      gtk_widget_queue_resize        (GtkWidget           *widget);
 void      gtk_widget_queue_resize_no_redraw (GtkWidget *widget);
-#ifndef GTK_DISABLE_DEPRECATED
-void      gtk_widget_size_request        (GtkWidget           *widget,
-                                          GtkRequisition      *requisition);
-#endif
+GDK_AVAILABLE_IN_3_8
+GdkFrameClock* gtk_widget_get_frame_clock (GtkWidget           *widget);
+
+GDK_DEPRECATED_IN_3_0_FOR(gtk_widget_get_preferred_size)
+void       gtk_widget_size_request        (GtkWidget           *widget,
+                                           GtkRequisition      *requisition);
 void      gtk_widget_size_allocate       (GtkWidget           *widget,
                                           GtkAllocation       *allocation);
 
@@ -499,10 +518,9 @@ void                gtk_widget_get_preferred_size             (GtkWidget      *w
                                                                GtkRequisition *minimum_size,
                                                                GtkRequisition *natural_size);
 
-#ifndef GTK_DISABLE_DEPRECATED
-void       gtk_widget_get_child_requisition (GtkWidget        *widget,
-                                            GtkRequisition    *requisition);
-#endif
+GDK_DEPRECATED_IN_3_0_FOR(gtk_widget_get_preferred_size)
+void       gtk_widget_get_child_requisition (GtkWidget         *widget,
+                                             GtkRequisition    *requisition);
 void      gtk_widget_add_accelerator     (GtkWidget           *widget,
                                           const gchar         *accel_signal,
                                           GtkAccelGroup       *accel_group,
@@ -516,8 +534,6 @@ gboolean   gtk_widget_remove_accelerator  (GtkWidget           *widget,
 void       gtk_widget_set_accel_path      (GtkWidget           *widget,
                                           const gchar         *accel_path,
                                           GtkAccelGroup       *accel_group);
-const gchar* _gtk_widget_get_accel_path   (GtkWidget           *widget,
-                                          gboolean            *locked);
 GList*     gtk_widget_list_accel_closures (GtkWidget          *widget);
 gboolean   gtk_widget_can_activate_accel  (GtkWidget           *widget,
                                            guint                signal_id);
@@ -550,6 +566,8 @@ void       gtk_widget_set_can_focus       (GtkWidget           *widget,
 gboolean   gtk_widget_get_can_focus       (GtkWidget           *widget);
 gboolean   gtk_widget_has_focus           (GtkWidget           *widget);
 gboolean   gtk_widget_is_focus            (GtkWidget           *widget);
+GDK_AVAILABLE_IN_3_2
+gboolean   gtk_widget_has_visible_focus   (GtkWidget           *widget);
 void       gtk_widget_grab_focus          (GtkWidget           *widget);
 
 void       gtk_widget_set_can_default     (GtkWidget           *widget,
@@ -570,12 +588,19 @@ gboolean   gtk_widget_device_is_shadowed  (GtkWidget           *widget,
 
 void                  gtk_widget_set_name               (GtkWidget    *widget,
                                                         const gchar  *name);
-G_CONST_RETURN gchar* gtk_widget_get_name               (GtkWidget    *widget);
+const gchar *         gtk_widget_get_name               (GtkWidget    *widget);
 
 void                  gtk_widget_set_state              (GtkWidget    *widget,
                                                         GtkStateType  state);
 GtkStateType          gtk_widget_get_state              (GtkWidget    *widget);
 
+void                  gtk_widget_set_state_flags        (GtkWidget     *widget,
+                                                         GtkStateFlags  flags,
+                                                         gboolean       clear);
+void                  gtk_widget_unset_state_flags      (GtkWidget     *widget,
+                                                         GtkStateFlags  flags);
+GtkStateFlags         gtk_widget_get_state_flags        (GtkWidget     *widget);
+
 void                  gtk_widget_set_sensitive          (GtkWidget    *widget,
                                                         gboolean      sensitive);
 gboolean              gtk_widget_get_sensitive          (GtkWidget    *widget);
@@ -584,6 +609,7 @@ gboolean              gtk_widget_is_sensitive           (GtkWidget    *widget);
 void                  gtk_widget_set_visible            (GtkWidget    *widget,
                                                          gboolean      visible);
 gboolean              gtk_widget_get_visible            (GtkWidget    *widget);
+gboolean              gtk_widget_is_visible             (GtkWidget    *widget);
 
 void                  gtk_widget_set_has_window         (GtkWidget    *widget,
                                                          gboolean      has_window);
@@ -624,6 +650,12 @@ gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);
 void                  gtk_widget_set_window             (GtkWidget    *widget,
                                                          GdkWindow    *window);
 GdkWindow           * gtk_widget_get_window             (GtkWidget    *widget);
+GDK_AVAILABLE_IN_3_8
+void                  gtk_widget_register_window        (GtkWidget    *widget,
+                                                         GdkWindow    *window);
+GDK_AVAILABLE_IN_3_8
+void                  gtk_widget_unregister_window      (GtkWidget    *widget,
+                                                         GdkWindow    *window);
 
 int                   gtk_widget_get_allocated_width    (GtkWidget     *widget);
 int                   gtk_widget_get_allocated_height   (GtkWidget     *widget);
@@ -658,10 +690,18 @@ void         gtk_widget_set_device_events   (GtkWidget           *widget,
 void       gtk_widget_add_device_events   (GtkWidget           *widget,
                                            GdkDevice           *device,
                                           GdkEventMask         events);
-void      gtk_widget_set_extension_events (GtkWidget           *widget,
-                                           GdkExtensionMode    mode);
+GDK_AVAILABLE_IN_3_8
+void      gtk_widget_set_opacity         (GtkWidget           *widget,
+                                          double               opacity);
+GDK_AVAILABLE_IN_3_8
+double    gtk_widget_get_opacity         (GtkWidget           *widget);
+
+void       gtk_widget_set_device_enabled  (GtkWidget    *widget,
+                                           GdkDevice    *device,
+                                           gboolean      enabled);
+gboolean   gtk_widget_get_device_enabled  (GtkWidget    *widget,
+                                           GdkDevice    *device);
 
-GdkExtensionMode gtk_widget_get_extension_events (GtkWidget    *widget);
 GtkWidget*   gtk_widget_get_toplevel   (GtkWidget      *widget);
 GtkWidget*   gtk_widget_get_ancestor   (GtkWidget      *widget,
                                         GType           widget_type);
@@ -702,6 +742,12 @@ void             gtk_widget_set_support_multidevice (GtkWidget      *widget,
                                                      gboolean        support_multidevice);
 
 /* Accessibility support */
+GDK_AVAILABLE_IN_3_2
+void             gtk_widget_class_set_accessible_type    (GtkWidgetClass     *widget_class,
+                                                          GType               type);
+GDK_AVAILABLE_IN_3_2
+void             gtk_widget_class_set_accessible_role    (GtkWidgetClass     *widget_class,
+                                                          AtkRole             role);
 AtkObject*       gtk_widget_get_accessible               (GtkWidget          *widget);
 
 
@@ -729,6 +775,7 @@ void     gtk_widget_set_margin_bottom (GtkWidget *widget,
 gint        gtk_widget_get_events      (GtkWidget      *widget);
 GdkEventMask gtk_widget_get_device_events (GtkWidget   *widget,
                                            GdkDevice    *device);
+GDK_DEPRECATED_IN_3_4_FOR(gdk_window_get_device_position)
 void        gtk_widget_get_pointer     (GtkWidget      *widget,
                                         gint           *x,
                                         gint           *y);
@@ -747,49 +794,34 @@ gboolean     gtk_widget_translate_coordinates (GtkWidget  *src_widget,
  */
 gboolean     gtk_widget_hide_on_delete (GtkWidget      *widget);
 
-/* Widget styles.
- */
-void        gtk_widget_style_attach       (GtkWidget            *widget);
-
-gboolean    gtk_widget_has_rc_style       (GtkWidget            *widget);
-void       gtk_widget_set_style          (GtkWidget            *widget,
-                                           GtkStyle             *style);
-void        gtk_widget_ensure_style       (GtkWidget            *widget);
-GtkStyle *  gtk_widget_get_style          (GtkWidget            *widget);
-
-void        gtk_widget_modify_style       (GtkWidget            *widget,
-                                          GtkRcStyle           *style);
-GtkRcStyle *gtk_widget_get_modifier_style (GtkWidget            *widget);
-void        gtk_widget_modify_fg          (GtkWidget            *widget,
-                                          GtkStateType          state,
-                                          const GdkColor       *color);
-void        gtk_widget_modify_bg          (GtkWidget            *widget,
-                                          GtkStateType          state,
-                                          const GdkColor       *color);
-void        gtk_widget_modify_text        (GtkWidget            *widget,
-                                          GtkStateType          state,
-                                          const GdkColor       *color);
-void        gtk_widget_modify_base        (GtkWidget            *widget,
-                                          GtkStateType          state,
-                                          const GdkColor       *color);
-void        gtk_widget_modify_cursor      (GtkWidget            *widget,
-                                          const GdkColor       *primary,
-                                          const GdkColor       *secondary);
-void        gtk_widget_modify_font        (GtkWidget            *widget,
-                                          PangoFontDescription *font_desc);
-void        gtk_widget_modify_symbolic_color (GtkWidget         *widget,
-                                           const gchar          *name,
-                                           const GdkColor       *color);
+/* Functions to override widget styling */
+void         gtk_widget_override_color            (GtkWidget     *widget,
+                                                   GtkStateFlags  state,
+                                                   const GdkRGBA *color);
+void         gtk_widget_override_background_color (GtkWidget     *widget,
+                                                   GtkStateFlags  state,
+                                                   const GdkRGBA *color);
+
+void         gtk_widget_override_font             (GtkWidget                  *widget,
+                                                   const PangoFontDescription *font_desc);
+
+void         gtk_widget_override_symbolic_color   (GtkWidget     *widget,
+                                                   const gchar   *name,
+                                                   const GdkRGBA *color);
+void         gtk_widget_override_cursor           (GtkWidget       *widget,
+                                                   const GdkRGBA   *cursor,
+                                                   const GdkRGBA   *secondary_cursor);
+
+void       gtk_widget_reset_style       (GtkWidget      *widget);
 
 PangoContext *gtk_widget_create_pango_context (GtkWidget   *widget);
 PangoContext *gtk_widget_get_pango_context    (GtkWidget   *widget);
 PangoLayout  *gtk_widget_create_pango_layout  (GtkWidget   *widget,
                                               const gchar *text);
 
-GdkPixbuf    *gtk_widget_render_icon          (GtkWidget   *widget,
+GdkPixbuf    *gtk_widget_render_icon_pixbuf   (GtkWidget   *widget,
                                                const gchar *stock_id,
-                                               GtkIconSize  size,
-                                               const gchar *detail);
+                                               GtkIconSize  size);
 
 /* handle composite names for GTK_COMPOSITE_CHILD widgets,
  * the returned name is newly allocated.
@@ -798,9 +830,6 @@ void   gtk_widget_set_composite_name        (GtkWidget      *widget,
                                         const gchar    *name);
 gchar* gtk_widget_get_composite_name   (GtkWidget      *widget);
      
-/* Descend recursively and set rc-style on all widgets without user styles */
-void       gtk_widget_reset_rc_styles   (GtkWidget      *widget);
-
 /* Push/pop pairs, to change default values upon a widget's creation.
  * This will override the values that got set by the
  * gtk_widget_set_default_* () functions.
@@ -829,13 +858,7 @@ void gtk_widget_style_get          (GtkWidget           *widget,
                                    const gchar    *first_property_name,
                                    ...) G_GNUC_NULL_TERMINATED;
 
-
-/* Set certain default values to be used at widget creation time.
- */
-GtkStyle*    gtk_widget_get_default_style    (void);
-
-/* Functions for setting directionality for widgets
- */
+/* Functions for setting directionality for widgets */
 
 void             gtk_widget_set_direction         (GtkWidget        *widget,
                                                   GtkTextDirection  dir);
@@ -854,21 +877,6 @@ void            gtk_widget_shape_combine_region (GtkWidget *widget,
 void        gtk_widget_input_shape_combine_region (GtkWidget *widget,
                                                     cairo_region_t *region);
 
-/* internal function */
-void        gtk_widget_reset_shapes       (GtkWidget *widget);
-
-/* Compute a widget's path in the form "GtkWindow.MyLabel", and
- * return newly alocated strings.
- */
-void        gtk_widget_path               (GtkWidget *widget,
-                                           guint     *path_length,
-                                           gchar    **path,
-                                           gchar    **path_reversed);
-void        gtk_widget_class_path         (GtkWidget *widget,
-                                           guint     *path_length,
-                                           gchar    **path,
-                                           gchar    **path_reversed);
-
 GList* gtk_widget_list_mnemonic_labels  (GtkWidget *widget);
 void   gtk_widget_add_mnemonic_label    (GtkWidget *widget,
                                         GtkWidget *label);
@@ -900,49 +908,33 @@ GtkRequisition *gtk_requisition_new      (void) G_GNUC_MALLOC;
 GtkRequisition *gtk_requisition_copy     (const GtkRequisition *requisition);
 void            gtk_requisition_free     (GtkRequisition       *requisition);
 
-GdkEventExpose *  _gtk_cairo_get_event                    (cairo_t      *cr);
-
-void              _gtk_widget_draw_internal               (GtkWidget    *widget,
-                                                           cairo_t      *cr,
-                                                           gboolean      clip_to_size);
-void              _gtk_widget_set_has_default             (GtkWidget    *widget,
-                                                           gboolean      has_default);
-void              _gtk_widget_set_has_grab                (GtkWidget    *widget,
-                                                           gboolean      has_grab);
-void              _gtk_widget_set_is_toplevel             (GtkWidget    *widget,
-                                                           gboolean      is_toplevel);
-
-void              _gtk_widget_grab_notify                 (GtkWidget    *widget,
-                                                          gboolean     was_grabbed);
-
-GtkWidgetAuxInfo *_gtk_widget_get_aux_info                (GtkWidget    *widget,
-                                                          gboolean      create);
-void              _gtk_widget_propagate_hierarchy_changed (GtkWidget    *widget,
-                                                          GtkWidget    *previous_toplevel);
-void              _gtk_widget_propagate_screen_changed    (GtkWidget    *widget,
-                                                          GdkScreen    *previous_screen);
-void             _gtk_widget_propagate_composited_changed (GtkWidget    *widget);
-
-void      _gtk_widget_set_device_window   (GtkWidget      *widget,
-                                            GdkDevice      *device,
-                                           GdkWindow      *pointer_window);
-GdkWindow *_gtk_widget_get_device_window   (GtkWidget      *widget,
-                                            GdkDevice      *device);
-GList *    _gtk_widget_list_devices        (GtkWidget      *widget);
-
-void       _gtk_widget_synthesize_crossing (GtkWidget      *from,
-                                           GtkWidget      *to,
-                                            GdkDevice      *device,
-                                           GdkCrossingMode mode);
-
-gpointer     _gtk_widget_peek_request_cache (GtkWidget *widget);
-
-void         _gtk_widget_buildable_finish_accelerator (GtkWidget *widget,
-                                                      GtkWidget *toplevel,
-                                                      gpointer   user_data);
-
 gboolean     gtk_widget_in_destruction (GtkWidget *widget);
 
+GtkStyleContext * gtk_widget_get_style_context (GtkWidget *widget);
+
+GtkWidgetPath *   gtk_widget_get_path (GtkWidget *widget);
+
+GDK_AVAILABLE_IN_3_4
+GdkModifierType   gtk_widget_get_modifier_mask (GtkWidget         *widget,
+                                                GdkModifierIntent  intent);
+
+GDK_AVAILABLE_IN_3_6
+void                    gtk_widget_insert_action_group                  (GtkWidget    *widget,
+                                                                         const gchar  *name,
+                                                                         GActionGroup *group);
+
+
+
+GDK_AVAILABLE_IN_3_8
+guint gtk_widget_add_tick_callback (GtkWidget       *widget,
+                                    GtkTickCallback  callback,
+                                    gpointer         user_data,
+                                    GDestroyNotify   notify);
+
+GDK_AVAILABLE_IN_3_8
+void gtk_widget_remove_tick_callback (GtkWidget       *widget,
+                                      guint            id);
+
 G_END_DECLS
 
 #endif /* __GTK_WIDGET_H__ */