[gtkmm] Gtk: Add Shortcut, ShortcutAction, ShortcutTrigger



commit 4e15bc4135abfc97eb4793d651424192df7093a6
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Sun Aug 30 18:36:12 2020 +0200

    Gtk: Add Shortcut, ShortcutAction, ShortcutTrigger
    
    and subclasses of ShortcutAction and ShortcutTrigger.
    Add ShortcutController::add_shortcut() and remove_shortcut().
    
    GtkShortcut, GtkShortcut[Action|Controller|Manager|Trigger] and
    subclasses of GtkShortcut[Action|Trigger] replace gtk3's
    GtkBinding[Set|Entry|Signal|Arg]. See issue #3.
    
    The regenerated gtk_methods.defs depends on the recent glibmm patch
    gmmproc: Make h2def.py recognize more macros
    https://gitlab.gnome.org/GNOME/glibmm/-/commit/737d68182b2d891541d60a6f0c5d0dec1dc861ac

 .gitignore                                |   6 +
 gdk/src/gdk_docs.xml                      |  14 +--
 gtk/gtkmm/meson.build                     |   3 +
 gtk/src/filelist.am                       |   3 +
 gtk/src/gtk_docs.xml                      | 116 +++++++++----------
 gtk/src/gtk_extra_objects.defs            |  12 ++
 gtk/src/gtk_methods.defs                  | 125 ++++++++++++++++++++
 gtk/src/gtk_signals.defs                  |  78 +++++++++++++
 gtk/src/shortcut.ccg                      |  15 +++
 gtk/src/shortcut.hg                       |  82 +++++++++++++
 gtk/src/shortcutaction.ccg                |  54 +++++++++
 gtk/src/shortcutaction.hg                 | 183 ++++++++++++++++++++++++++++++
 gtk/src/shortcutcontroller.ccg            |  13 ---
 gtk/src/shortcutcontroller.hg             |  15 ++-
 gtk/src/shortcuttrigger.ccg               |  17 +++
 gtk/src/shortcuttrigger.hg                | 156 +++++++++++++++++++++++++
 gtk/src/widget.hg                         |   6 +-
 tools/extra_defs_gen/generate_defs_gtk.cc |   5 +
 tools/m4/convert_gdk.m4                   |   7 +-
 tools/m4/convert_gtk.m4                   |   7 ++
 20 files changed, 825 insertions(+), 92 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 10ac7e5c..e739b7ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -495,6 +495,10 @@ gtk/gtkmm/separator.cc
 gtk/gtkmm/separator.h
 gtk/gtkmm/settings.cc
 gtk/gtkmm/settings.h
+gtk/gtkmm/shortcut.cc
+gtk/gtkmm/shortcut.h
+gtk/gtkmm/shortcutaction.cc
+gtk/gtkmm/shortcutaction.h
 gtk/gtkmm/shortcutcontroller.cc
 gtk/gtkmm/shortcutcontroller.h
 gtk/gtkmm/shortcutlabel.cc
@@ -509,6 +513,8 @@ gtk/gtkmm/shortcutsshortcut.cc
 gtk/gtkmm/shortcutsshortcut.h
 gtk/gtkmm/shortcutswindow.cc
 gtk/gtkmm/shortcutswindow.h
+gtk/gtkmm/shortcuttrigger.cc
+gtk/gtkmm/shortcuttrigger.h
 gtk/gtkmm/signallistitemfactory.cc
 gtk/gtkmm/signallistitemfactory.h
 gtk/gtkmm/singleselection.cc
diff --git a/gdk/src/gdk_docs.xml b/gdk/src/gdk_docs.xml
index 585859a8..099fb5c1 100644
--- a/gdk/src/gdk_docs.xml
+++ b/gdk/src/gdk_docs.xml
@@ -2670,7 +2670,7 @@ gdk_draw_context_end_frame() is called.
 </parameters>
 <return> a Cairo context to be used
 to draw the contents of the #GdkSurface. %NULL is returned
-when @contet is not drawing.
+when @context is not drawing.
 </return>
 </function>
 
@@ -4272,7 +4272,7 @@ Whenever data needs to be written, the union provider will try the given
 be chosen to provide it.
 
 This allows an easy way to support providing data in different formats.
-For example, an image may be provided by its file and by the iamge
+For example, an image may be provided by its file and by the image
 contents with a call such as
 |[&lt;!-- language=&quot;C&quot; --&gt;
 gdk_content_provider_new_union ((GdkContentProvider *[2]) {
@@ -5771,7 +5771,7 @@ Finds out if the display has been closed.
 <description>
 Returns whether surfaces can reasonably be expected to have
 their alpha channel drawn correctly on the screen. Check
-gdk_display_is_rgba() for wether the display supports an
+gdk_display_is_rgba() for whether the display supports an
 alpha channel.
 
 On X11 this function returns whether a compositing manager is
@@ -5794,7 +5794,7 @@ expected to have their alpha channels drawn correctly on the screen.
 
 <function name="gdk_display_is_rgba">
 <description>
-Returns wether surfaces on this @display are created with an
+Returns whether surfaces on this @display are created with an
 alpha channel.
 
 Even if a %TRUE is returned, it is possible that the
@@ -6575,7 +6575,7 @@ After a call to gdk_draw_context_begin_frame() this function will return
 a union of the region passed to that function and the area of the surface
 that the @context determined needs to be repainted.
 
-If @context is not inbetween calls to gdk_draw_context_begin_frame() and
+If @context is not in between calls to gdk_draw_context_begin_frame() and
 gdk_draw_context_end_frame(), %NULL will be returned.
 
 
@@ -7971,7 +7971,7 @@ calling this function.
 <description>
 Sets whether the #GdkGLContext should be forward compatible.
 
-Forward compatibile contexts must not support OpenGL functionality that
+Forward compatible contexts must not support OpenGL functionality that
 has been marked as deprecated in the requested version; non-forward
 compatible contexts, on the other hand, must support both deprecated and
 non deprecated functionality.
@@ -15748,7 +15748,7 @@ right-click on the window decorations.
 Retrieves the bounds the toplevel is placed within.
 
 The bounds represent the largest size a toplevel may have while still being
-able to fit within some type of boundery. Depending on the backend, this may
+able to fit within some type of boundary. Depending on the backend, this may
 be equivalent to the dimensions of the work area or the monitor on which the
 window is being presented on, or something else that limits the way a
 toplevel can be presented.
diff --git a/gtk/gtkmm/meson.build b/gtk/gtkmm/meson.build
index c336e2fb..b8c57170 100644
--- a/gtk/gtkmm/meson.build
+++ b/gtk/gtkmm/meson.build
@@ -199,6 +199,8 @@ gtkmm_any_hg_ccg_basenames = [
   'separator',
   'settings',
   'signallistitemfactory',
+  'shortcut',
+  'shortcutaction',
   'shortcutcontroller',
   'shortcutlabel',
   'shortcutmanager',
@@ -206,6 +208,7 @@ gtkmm_any_hg_ccg_basenames = [
   'shortcutssection',
   'shortcutsshortcut',
   'shortcutswindow',
+  'shortcuttrigger',
   'singleselection',
   'sizegroup',
   'snapshot',
diff --git a/gtk/src/filelist.am b/gtk/src/filelist.am
index c7a376c3..a4db2455 100644
--- a/gtk/src/filelist.am
+++ b/gtk/src/filelist.am
@@ -183,6 +183,8 @@ gtkmm_files_any_hg =                \
        selectionmodel.hg \
        separator.hg            \
        settings.hg             \
+       shortcut.hg \
+       shortcutaction.hg \
        shortcutcontroller.hg \
        shortcutlabel.hg \
        shortcutmanager.hg \
@@ -190,6 +192,7 @@ gtkmm_files_any_hg =                \
        shortcutssection.hg             \
        shortcutsshortcut.hg            \
        shortcutswindow.hg              \
+       shortcuttrigger.hg \
        signallistitemfactory.hg \
        singleselection.hg \
        sizegroup.hg            \
diff --git a/gtk/src/gtk_docs.xml b/gtk/src/gtk_docs.xml
index d6faa7c1..84b6e40d 100644
--- a/gtk/src/gtk_docs.xml
+++ b/gtk/src/gtk_docs.xml
@@ -1635,7 +1635,7 @@ Priority used when loading
 
 <property name="GtkBoolFilter:expression">
 <description>
-The boolean expression to evalute on item
+The boolean expression to evaluate on item
 
 </description>
 </property>
@@ -2960,7 +2960,7 @@ since 3.0
 <description>
 Whether the view should request enough space to always fit
 the size of every row in the model (used by the combo box to
-ensure the combo box size doesnt change when different items
+ensure the combo box size doesn't change when different items
 are selected).
 
 since 3.0
@@ -6474,7 +6474,7 @@ selected children.
 </description>
 <parameters>
 <parameter name="box">
-<parameter_description> the #GtkFlowBox on wich the signal is emitted
+<parameter_description> the #GtkFlowBox on which the signal is emitted
 </parameter_description>
 </parameter>
 </parameters>
@@ -6849,7 +6849,7 @@ is faster.
 If set to %FALSE the data from previous rendering is kept around and will
 be used for drawing the widget the next time, unless the window is resized.
 In order to force a rendering gtk_gl_area_queue_render() must be called.
-This mode is useful when the scene changes seldomly, but takes a long time
+This mode is useful when the scene changes seldom, but takes a long time
 to redraw.
 
 </description>
@@ -8102,7 +8102,7 @@ An enum for determining where a dropped item goes.
 </parameter_description>
 </parameter>
 <parameter name="GTK_ICON_VIEW_DROP_LEFT">
-<parameter_description> droppped item is inserted to the left
+<parameter_description> dropped item is inserted to the left
 </parameter_description>
 </parameter>
 <parameter name="GTK_ICON_VIEW_DROP_RIGHT">
@@ -8625,7 +8625,7 @@ means wrap on word boundaries.
 
 <property name="GtkLabel:xalign">
 <description>
-The xalign property determines the horizontal aligment of the label text
+The xalign property determines the horizontal alignment of the label text
 inside the labels size allocation. Compare this to #GtkWidget:halign,
 which determines how the labels size allocation is positioned in the
 space available for the label.
@@ -8635,7 +8635,7 @@ space available for the label.
 
 <property name="GtkLabel:yalign">
 <description>
-The yalign property determines the vertical aligment of the label text
+The yalign property determines the vertical alignment of the label text
 inside the labels size allocation. Compare this to #GtkWidget:valign,
 which determines how the labels size allocation is positioned in the
 space available for the label.
@@ -8941,7 +8941,7 @@ set of selected rows changes.
 </description>
 <parameters>
 <parameter name="box">
-<parameter_description> the #GtkListBox on wich the signal is emitted
+<parameter_description> the #GtkListBox on which the signal is emitted
 </parameter_description>
 </parameter>
 </parameters>
@@ -9709,7 +9709,7 @@ multiple pages per sheet.
 
 <property name="GtkNumericSorter:expression">
 <description>
-The expression to evalute on items to get a number to compare with
+The expression to evaluate on items to get a number to compare with
 
 </description>
 </property>
@@ -10856,7 +10856,7 @@ The number of pages in the document.
 
 This must be set to a positive number
 before the rendering starts. It may be set in a 
-#GtkPrintOperation::begin-print signal hander.
+#GtkPrintOperation::begin-print signal handler.
 
 Note that the page numbers passed to the 
 #GtkPrintOperation::request-page-setup and 
@@ -12018,7 +12018,7 @@ The minimum content width of @scrolled_window, or -1 if not set.
 <description>
 Whether overlay scrolling is enabled or not. If it is, the
 scrollbars are only added as traditional widgets when a mouse
-is present. Otherwise, they are overlayed on top of the content,
+is present. Otherwise, they are overlaid on top of the content,
 as narrow indicators.
 
 Note that overlay scrolling can also be globally disabled, with
@@ -12433,7 +12433,7 @@ The time for a button or touch press to be considered a &quot;long press&quot;.
 
 <property name="GtkSettings:gtk-overlay-scrolling">
 <description>
-Whether scrolled windows may use overlayed scrolling indicators.
+Whether scrolled windows may use overlaid scrolling indicators.
 If this is set to %FALSE, scrolled windows will have permanent
 scrollbars.
 
@@ -13705,7 +13705,7 @@ Is emitted whenever a new message gets pushed onto a statusbar's stack.
 
 <property name="GtkStringFilter:expression">
 <description>
-The expression to evalute on item to get a string to compare with
+The expression to evaluate on item to get a string to compare with
 
 </description>
 </property>
@@ -13757,7 +13757,7 @@ with the search string.
 
 <property name="GtkStringSorter:expression">
 <description>
-The expression to evalute on item to get a string to compare with
+The expression to evaluate on item to get a string to compare with
 
 </description>
 </property>
@@ -14891,7 +14891,7 @@ The paragraph background color as a #GdkRGBA.
 <property name="GtkTextTag:strikethrough-rgba">
 <description>
 This property modifies the color of strikeouts. If not set, strikeouts
-will use the forground color.
+will use the foreground color.
 
 </description>
 </property>
@@ -14906,7 +14906,7 @@ If the #GtkTextTag:strikethrough-rgba property has been set.
 <property name="GtkTextTag:underline-rgba">
 <description>
 This property modifies the color of underlines. If not set, underlines
-will use the forground color.
+will use the foreground color.
 
 If #GtkTextTag:underline is set to %PANGO_UNDERLINE_ERROR, an alternate
 color may be applied instead of the foreground. Setting this property
@@ -16072,7 +16072,7 @@ can make columns appear choppy.
 </parameter_description>
 </parameter>
 <parameter name="GTK_TREE_VIEW_COLUMN_AUTOSIZE">
-<parameter_description> Columns resize to be the optimal size everytime the model changes.
+<parameter_description> Columns resize to be the optimal size every time the model changes.
 </parameter_description>
 </parameter>
 <parameter name="GTK_TREE_VIEW_COLUMN_FIXED">
@@ -19969,7 +19969,7 @@ Associates a shortcuts window with the application window, and
 sets up an action with the name win.show-help-overlay to present
 it.
 
-@window takes resposibility for destroying @help_overlay.
+@window takes responsibility for destroying @help_overlay.
 
 </description>
 <parameters>
@@ -20022,7 +20022,7 @@ Gets the child widget of @self.
 
 <function name="gtk_aspect_frame_get_obey_child">
 <description>
-Returns whether the childs size request should override
+Returns whether the child's size request should override
 the set aspect ratio of the #GtkAspectFrame.
 
 
@@ -20033,7 +20033,7 @@ the set aspect ratio of the #GtkAspectFrame.
 </parameter_description>
 </parameter>
 </parameters>
-<return> whether to obey the childs size request
+<return> whether to obey the child's size request
 </return>
 </function>
 
@@ -20140,7 +20140,7 @@ Sets the child widget of @self.
 
 <function name="gtk_aspect_frame_set_obey_child">
 <description>
-Sets whether the aspect ratio of the childs size
+Sets whether the aspect ratio of the child's size
 request should override the set aspect ratio of
 the #GtkAspectFrame.
 
@@ -20846,7 +20846,7 @@ Adds all values from @start (inclusive) to @start + @n_items
 <function name="gtk_bitset_add_range_closed">
 <description>
 Adds the closed range [@first, @last], so @first, @last and all
-values inbetween. @first must be smaller than @last.
+values in between. @first must be smaller than @last.
 
 </description>
 <parameters>
@@ -21391,7 +21391,7 @@ in @self.
 <function name="gtk_bitset_remove_range_closed">
 <description>
 Removes the closed range [@first, @last], so @first, @last and all
-values inbetween. @first must be smaller than @last.
+values in between. @first must be smaller than @last.
 
 </description>
 <parameters>
@@ -21631,7 +21631,7 @@ Returns %TRUE if the files are currently being loaded.
 
 Files will be added to @self from time to time while loading is
 going on. The order in which are added is undefined and may change
-inbetween runs.
+in between runs.
 
 
 </description>
@@ -23333,7 +23333,7 @@ from untrusted sources.
 <function name="gtk_builder_set_current_object">
 <description>
 Sets the current object for the @builder. The current object can be
-tought of as the `this` object that the builder is working for and
+thought of as the `this` object that the builder is working for and
 will often be used as the default object when an object is optional.
 
 gtk_widget_init_template() for example will set the current object to
@@ -26216,7 +26216,7 @@ Fills in @xpad and @ypad with the appropriate values of @cell.
 
 <function name="gtk_cell_renderer_get_preferred_height">
 <description>
-Retreives a renderer’s natural size when rendered to @widget.
+Retrieves a renderer’s natural size when rendered to @widget.
 
 </description>
 <parameters>
@@ -26242,7 +26242,7 @@ Retreives a renderer’s natural size when rendered to @widget.
 
 <function name="gtk_cell_renderer_get_preferred_height_for_width">
 <description>
-Retreives a cell renderers’s minimum and natural height if it were rendered to 
+Retrieves a cell renderers’s minimum and natural height if it were rendered to 
 @widget with the specified @width.
 
 </description>
@@ -26300,7 +26300,7 @@ into account the widget’s preference for height-for-width management.
 
 <function name="gtk_cell_renderer_get_preferred_width">
 <description>
-Retreives a renderer’s natural size when rendered to @widget.
+Retrieves a renderer’s natural size when rendered to @widget.
 
 </description>
 <parameters>
@@ -26326,7 +26326,7 @@ Retreives a renderer’s natural size when rendered to @widget.
 
 <function name="gtk_cell_renderer_get_preferred_width_for_height">
 <description>
-Retreives a cell renderers’s minimum and natural width if it were rendered to 
+Retrieves a cell renderers’s minimum and natural width if it were rendered to 
 @widget with the specified @height.
 
 </description>
@@ -26734,7 +26734,7 @@ of the #GtkTreeView
 Sets the height of a renderer to explicitly be determined by the “font” and
 “y_pad” property set on it.  Further changes in these properties do not
 affect the height, so they must be accompanied by a subsequent call to this
-function.  Using this function is unflexible, and should really only be used
+function.  Using this function is inflexible, and should really only be used
 if calculating the size of a cell is too slow (ie, a massive number of cells
 displayed).  If @number_of_rows is -1, then the fixed height is unset, and
 the height is determined by the properties again.
@@ -26969,7 +26969,7 @@ Creates a new #GtkCellView widget.
 Creates a new #GtkCellView widget with a specific #GtkCellArea
 to layout cells and a specific #GtkCellAreaContext.
 
-Specifying the same context for a handfull of cells lets
+Specifying the same context for a handful of cells lets
 the underlying area synchronize the geometry for those cells,
 in this way alignments with cellviews for other rows are
 possible.
@@ -28286,7 +28286,7 @@ for setting up customizable sorting for #GtkColumnView.
 <function name="gtk_column_view_column_set_title">
 <description>
 Sets the title of this column. The title is displayed in the header of a
-#GtkColumnView for this column and is therefor user-facing text that should
+#GtkColumnView for this column and is therefore user-facing text that should
 be translated.
 
 </description>
@@ -30385,7 +30385,7 @@ or %NULL on error
 <description>
 If the parser matches the &lt;url&gt; token from the [CSS
 specification](https://drafts.csswg.org/css-values-4/#url-value),
-consumes it, resolves the URL and resturns the resulting #GFile.
+consumes it, resolves the URL and returns the resulting #GFile.
 On failure, an error is emitted and %NULL is returned.
 
 
@@ -31620,7 +31620,7 @@ progress.
 
 Files will be added to @self from time to time while loading is
 going on. The order in which are added is undefined and may change
-inbetween runs.
+in between runs.
 
 
 </description>
@@ -31705,7 +31705,7 @@ ongoing load as soon as possible.
 
 The default IO priority is %G_PRIORITY_DEFAULT, which is higher than
 the GTK redraw priority. If you are loading a lot of directories in
-parrallel, lowering it to something like %G_PRIORITY_DEFAULT_IDLE
+parallel, lowering it to something like %G_PRIORITY_DEFAULT_IDLE
 may increase responsiveness.
 
 </description>
@@ -36851,7 +36851,7 @@ Gets the currently selected option in the 'choice' with the given ID.
 
 <function name="gtk_file_chooser_get_create_folders">
 <description>
-Gets whether file choser will offer to create new folders.
+Gets whether file chooser will offer to create new folders.
 See gtk_file_chooser_set_create_folders().
 
 
@@ -37243,7 +37243,7 @@ possible options are &quot;true&quot; and &quot;false&quot;.
 
 <function name="gtk_file_chooser_set_create_folders">
 <description>
-Sets whether file choser will offer to create new folders.
+Sets whether file chooser will offer to create new folders.
 This is only relevant if the action is not set to be 
 %GTK_FILE_CHOOSER_ACTION_OPEN.
 
@@ -39536,7 +39536,7 @@ to gtk_frame_new().)
 </parameter>
 </parameters>
 <return> the text in the label, or %NULL if there
-was no label widget or the lable widget was not
+was no label widget or the label widget was not
 a #GtkLabel. This string is owned by GTK+ and
 must not be modified or freed.
 </return>
@@ -40793,7 +40793,7 @@ GTK headers you have included when compiling your code.
 <description>
 Ensures that the @area framebuffer object is made the current draw
 and read target, and that all the required buffers for the @area
-are created and bound to the frambuffer.
+are created and bound to the framebuffer.
 
 This function is automatically called before emitting the
 #GtkGLArea::render signal, and doesn't normally need to be called
@@ -40990,7 +40990,7 @@ If @auto_render is %FALSE the data from previous rendering is kept
 around and will be used for drawing the widget the next time,
 unless the window is resized. In order to force a rendering
 gtk_gl_area_queue_render() must be called. This mode is useful when
-the scene changes seldomly, but takes a long time to redraw.
+the scene changes seldom, but takes a long time to redraw.
 
 </description>
 <parameters>
@@ -50191,7 +50191,7 @@ Seek operations may not finish instantly. While a seek operation is
 in process, the GtkMediaStream:seeking property will be set.
 
 When calling gtk_media_stream_seek() during an ongoing seek operation,
-the new seek wil override any pending seek.
+the new seek will override any pending seek.
 
 </description>
 <parameters>
@@ -56187,7 +56187,7 @@ Gets the job title.
 
 <function name="gtk_print_job_get_track_print_status">
 <description>
-Returns wheter jobs will be tracked after printing.
+Returns whether jobs will be tracked after printing.
 For details, see gtk_print_job_set_track_print_status().
 
 
@@ -57041,7 +57041,7 @@ Selected page setup is stored as default page setup in #GtkPrintOperation.
 <function name="gtk_print_operation_set_export_filename">
 <description>
 Sets up the #GtkPrintOperation to generate a file instead
-of showing the print dialog. The indended use of this function
+of showing the print dialog. The intended use of this function
 is for implementing “Export to PDF” actions. Currently, PDF
 is the only supported format.
 
@@ -57113,7 +57113,7 @@ Sets the number of pages in the document.
 
 This must be set to a positive number
 before the rendering starts. It may be set in a 
-#GtkPrintOperation::begin-print signal hander.
+#GtkPrintOperation::begin-print signal handler.
 
 Note that the page numbers passed to the 
 #GtkPrintOperation::request-page-setup 
@@ -60233,7 +60233,7 @@ last_button = radio_button;
 </parameter_description>
 </parameter>
 <parameter name="group_source">
-<parameter_description> a radio button object whos group we are 
+<parameter_description> a radio button object whose group we are 
 joining, or %NULL to remove the radio button from its group
 </parameter_description>
 </parameter>
@@ -61443,7 +61443,7 @@ with @uri inside the recent manager.
 <function name="gtk_recent_manager_lookup_item">
 <description>
 Searches for a URI inside the recently used resources list, and
-returns a #GtkRecentInfo containing informations about the resource
+returns a #GtkRecentInfo containing information about the resource
 like its MIME type, or its display name.
 
 
@@ -62890,7 +62890,7 @@ Sets the position in which the current value is displayed.
 Returns the size of a non-scrolling border around the
 outside of the scrollable. An example for this would
 be treeview headers. GTK+ can use this information to
-display overlayed graphics, like the overshoot indication,
+display overlaid graphics, like the overshoot indication,
 at the right position.
 
 
@@ -64213,7 +64213,7 @@ If you can, you should try the simpler versions, as implementations
 are more likely to implement support for those.
 
 Requests that the selection state of all positions set in @mask be
-updated to the respecitve value in the @selected bitmask.
+updated to the respective value in the @selected bitmask.
 
 In pseudocode, it would look something like this:
 
@@ -67687,7 +67687,7 @@ See gtk_stack_set_hhomogeneous().
 
 <function name="gtk_stack_get_interpolate_size">
 <description>
-Returns wether the #GtkStack is set up to interpolate between
+Returns whether the #GtkStack is set up to interpolate between
 the sizes of children on page switch.
 
 
@@ -71796,8 +71796,10 @@ Gets the value of the #GtkText:input-purpose property.
 <function name="gtk_text_get_invisible_char">
 <description>
 Retrieves the character displayed in place of the real characters
-for entries with visibility set to false.
-See gtk_text_set_invisible_char().
+for entries with visibility set to false. Note that GTK does not
+compute this value unless it needs it, so the value returned by
+this function is not very useful unless it has been explicitly
+set with gtk_text_set_invisible_char()
 
 
 </description>
@@ -71807,8 +71809,8 @@ See gtk_text_set_invisible_char().
 </parameter_description>
 </parameter>
 </parameters>
-<return> the current invisible char, or 0, if the self does not
-show invisible text at all. 
+<return> the current invisible char, or 0, if @text does not
+show invisible text at all.
 </return>
 </function>
 
@@ -72761,7 +72763,7 @@ If @pred never returns %TRUE, @iter is set to @limit if
 Moves @iter to the start of the next line. If the iter is already on the
 last line of the buffer, moves the iter to the end of the current line.
 If after the operation, the iter is at the end of the buffer and not
-dereferencable, returns %FALSE. Otherwise, returns %TRUE.
+dereferenceable, returns %FALSE. Otherwise, returns %TRUE.
 
 
 </description>
@@ -75099,7 +75101,7 @@ Adds a child widget in the text buffer, at the given @anchor.
 <description>
 Adds @child at a fixed coordinate in the #GtkTextView's text window. The
 @xpos and @ypos must be in buffer coordinates (see
-gtk_text_view_get_iter_location() to conver to buffer coordinates).
+gtk_text_view_get_iter_location() to convert to buffer coordinates).
 
 @child will scroll with the text view.
 
@@ -87588,7 +87590,7 @@ they will recursively try to find a child that does not return %NULL.
 Widgets are however free to customize their picking algorithm.
 
 This function is used on the toplevel to determine the widget below
-the mouse cursor for purposes of hover hilighting and delivering events.
+the mouse cursor for purposes of hover highlighting and delivering events.
 
 
 </description>
@@ -89430,7 +89432,7 @@ This function will return the logical size of the #GtkWindow,
 excluding the widgets used in client side decorations; there is,
 however, no guarantee that the result will be completely accurate
 because client side decoration may include widgets that depend on
-the user preferences and that may not be visibile at the time you
+the user preferences and that may not be visible at the time you
 call this function.
 
 The dimensions returned by this function are suitable for being
diff --git a/gtk/src/gtk_extra_objects.defs b/gtk/src/gtk_extra_objects.defs
index 538c1eba..784119c9 100644
--- a/gtk/src/gtk_extra_objects.defs
+++ b/gtk/src/gtk_extra_objects.defs
@@ -30,6 +30,12 @@
   (gtype-id "GTK_TYPE_ACCEL_MAP")
 )
 
+(define-object AlternativeTrigger
+  (in-module "Gtk")
+  (c-name "GtkAlternativeTrigger")
+  (gtype-id "GTK_TYPE_ALTERNATIVE_TRIGGER")
+)
+
 (define-object AppChooser
   (in-module "Gtk")
   (c-name "GtkAppChooser")
@@ -496,6 +502,12 @@
   (gtype-id "GTK_TYPE_SELECTION_MODEL")
 )
 
+(define-object ShortcutAction
+  (in-module "Gtk")
+  (c-name "GtkShortcutAction")
+  (gtype-id "GTK_TYPE_SHORTCUT_ACTION")
+)
+
 (define-object SingleSelection
   (in-module "Gtk")
   (c-name "GtkSingleSelection")
diff --git a/gtk/src/gtk_methods.defs b/gtk/src/gtk_methods.defs
index 96829ed1..864c1a19 100644
--- a/gtk/src/gtk_methods.defs
+++ b/gtk/src/gtk_methods.defs
@@ -3602,6 +3602,12 @@
 
 ;; From gtkatcontext.h
 
+(define-method get_accessible
+  (of-object "GtkATContext")
+  (c-name "gtk_at_context_get_accessible")
+  (return-type "GtkAccessible*")
+)
+
 (define-method get_accessible_role
   (of-object "GtkATContext")
   (c-name "gtk_at_context_get_accessible_role")
@@ -4683,6 +4689,12 @@
 
 ;; From gtkbuilderscope.h
 
+(define-function gtk_builder_cscope_new
+  (c-name "gtk_builder_cscope_new")
+  (is-constructor-of "GtkBuilderCscope")
+  (return-type "GtkBuilderScope*")
+)
+
 (define-method add_callback_symbol
   (of-object "GtkBuilderCScope")
   (c-name "gtk_builder_cscope_add_callback_symbol")
@@ -16190,6 +16202,15 @@
 
 ;; From gtkmultifilter.h
 
+(define-method append
+  (of-object "GtkMultiFilter")
+  (c-name "gtk_multi_filter_append")
+  (return-type "none")
+  (parameters
+    '("GtkFilter*" "filter")
+  )
+)
+
 (define-method remove
   (of-object "GtkMultiFilter")
   (c-name "gtk_multi_filter_remove")
@@ -16199,6 +16220,18 @@
   )
 )
 
+(define-function gtk_any_filter_new
+  (c-name "gtk_any_filter_new")
+  (is-constructor-of "GtkAnyFilter")
+  (return-type "GtkFilter*")
+)
+
+(define-function gtk_every_filter_new
+  (c-name "gtk_every_filter_new")
+  (is-constructor-of "GtkEveryFilter")
+  (return-type "GtkFilter*")
+)
+
 
 
 ;; From gtkmultiselection.h
@@ -21928,6 +21961,12 @@
 
 ;; From gtkshortcutaction.h
 
+(define-method to_string
+  (of-object "GtkShortcutAction")
+  (c-name "gtk_shortcut_action_to_string")
+  (return-type "char*")
+)
+
 (define-function gtk_shortcut_action_parse_string
   (c-name "gtk_shortcut_action_parse_string")
   (return-type "GtkShortcutAction*")
@@ -21956,12 +21995,56 @@
   )
 )
 
+(define-function gtk_nothing_action_get
+  (c-name "gtk_nothing_action_get")
+  (return-type "GtkShortcutAction*")
+)
+
+(define-function gtk_callback_action_new
+  (c-name "gtk_callback_action_new")
+  (is-constructor-of "GtkCallbackAction")
+  (return-type "GtkShortcutAction*")
+  (parameters
+    '("GtkShortcutFunc" "callback")
+    '("gpointer" "data")
+    '("GDestroyNotify" "destroy")
+  )
+)
+
+(define-function gtk_mnemonic_action_get
+  (c-name "gtk_mnemonic_action_get")
+  (return-type "GtkShortcutAction*")
+)
+
+(define-function gtk_activate_action_get
+  (c-name "gtk_activate_action_get")
+  (return-type "GtkShortcutAction*")
+)
+
+(define-function gtk_signal_action_new
+  (c-name "gtk_signal_action_new")
+  (is-constructor-of "GtkSignalAction")
+  (return-type "GtkShortcutAction*")
+  (parameters
+    '("const-char*" "signal_name")
+  )
+)
+
 (define-method get_signal_name
   (of-object "GtkSignalAction")
   (c-name "gtk_signal_action_get_signal_name")
   (return-type "const-char*")
 )
 
+(define-function gtk_named_action_new
+  (c-name "gtk_named_action_new")
+  (is-constructor-of "GtkNamedAction")
+  (return-type "GtkShortcutAction*")
+  (parameters
+    '("const-char*" "name")
+  )
+)
+
 (define-method get_action_name
   (of-object "GtkNamedAction")
   (c-name "gtk_named_action_get_action_name")
@@ -22201,6 +22284,14 @@
 
 ;; From gtkshortcuttrigger.h
 
+(define-function gtk_shortcut_trigger_parse_string
+  (c-name "gtk_shortcut_trigger_parse_string")
+  (return-type "GtkShortcutTrigger*")
+  (parameters
+    '("const-char*" "string")
+  )
+)
+
 (define-method to_string
   (of-object "GtkShortcutTrigger")
   (c-name "gtk_shortcut_trigger_to_string")
@@ -22271,6 +22362,21 @@
   )
 )
 
+(define-function gtk_never_trigger_get
+  (c-name "gtk_never_trigger_get")
+  (return-type "GtkShortcutTrigger*")
+)
+
+(define-function gtk_keyval_trigger_new
+  (c-name "gtk_keyval_trigger_new")
+  (is-constructor-of "GtkKeyvalTrigger")
+  (return-type "GtkShortcutTrigger*")
+  (parameters
+    '("guint" "keyval")
+    '("GdkModifierType" "modifiers")
+  )
+)
+
 (define-method get_modifiers
   (of-object "GtkKeyvalTrigger")
   (c-name "gtk_keyval_trigger_get_modifiers")
@@ -22283,12 +22389,31 @@
   (return-type "guint")
 )
 
+(define-function gtk_mnemonic_trigger_new
+  (c-name "gtk_mnemonic_trigger_new")
+  (is-constructor-of "GtkMnemonicTrigger")
+  (return-type "GtkShortcutTrigger*")
+  (parameters
+    '("guint" "keyval")
+  )
+)
+
 (define-method get_keyval
   (of-object "GtkMnemonicTrigger")
   (c-name "gtk_mnemonic_trigger_get_keyval")
   (return-type "guint")
 )
 
+(define-function gtk_alternative_trigger_new
+  (c-name "gtk_alternative_trigger_new")
+  (is-constructor-of "GtkAlternativeTrigger")
+  (return-type "GtkShortcutTrigger*")
+  (parameters
+    '("GtkShortcutTrigger*" "first")
+    '("GtkShortcutTrigger*" "second")
+  )
+)
+
 (define-method get_first
   (of-object "GtkAlternativeTrigger")
   (c-name "gtk_alternative_trigger_get_first")
diff --git a/gtk/src/gtk_signals.defs b/gtk/src/gtk_signals.defs
index bc559057..909a4913 100644
--- a/gtk/src/gtk_signals.defs
+++ b/gtk/src/gtk_signals.defs
@@ -284,6 +284,26 @@
   (default-value "0")
 )
 
+;; From GtkAlternativeTrigger
+
+(define-property first
+  (of-object "GtkAlternativeTrigger")
+  (prop-type "GParamObject")
+  (docs "The first trigger to check")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property second
+  (of-object "GtkAlternativeTrigger")
+  (prop-type "GParamObject")
+  (docs "The second trigger to check")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
 ;; From GtkAppChooser
 
 (define-property content-type
@@ -5849,6 +5869,28 @@
   (default-value "FALSE")
 )
 
+;; From GtkKeyvalTrigger
+
+(define-property keyval
+  (of-object "GtkKeyvalTrigger")
+  (prop-type "GParamUInt")
+  (docs "The key value for the trigger")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "0")
+)
+
+(define-property modifiers
+  (of-object "GtkKeyvalTrigger")
+  (prop-type "GParamFlags")
+  (docs "The key modifiers for the trigger")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "0")
+)
+
 ;; From GtkLabel
 
 (define-signal activate-link
@@ -6792,6 +6834,18 @@
   (construct-only #f)
 )
 
+;; From GtkMnemonicTrigger
+
+(define-property keyval
+  (of-object "GtkMnemonicTrigger")
+  (prop-type "GParamUInt")
+  (docs "The key value for the trigger")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "0")
+)
+
 ;; From GtkMultiSelection
 
 (define-property model
@@ -6803,6 +6857,18 @@
   (construct-only #f)
 )
 
+;; From GtkNamedAction
+
+(define-property action-name
+  (of-object "GtkNamedAction")
+  (prop-type "GParamString")
+  (docs "The name of the action to activate")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "")
+)
+
 ;; From GtkNativeDialog
 
 (define-signal response
@@ -9648,6 +9714,18 @@
   (default-value "")
 )
 
+;; From GtkSignalAction
+
+(define-property signal-name
+  (of-object "GtkSignalAction")
+  (prop-type "GParamString")
+  (docs "The name of the signal to emit")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "")
+)
+
 ;; From GtkSignalListItemFactory
 
 (define-signal setup
diff --git a/gtk/src/shortcut.ccg b/gtk/src/shortcut.ccg
new file mode 100644
index 00000000..da1d97e5
--- /dev/null
+++ b/gtk/src/shortcut.ccg
@@ -0,0 +1,15 @@
+/* Copyright (C) 2020 The gtkmm Development Team
+ *
+ * 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.1 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/>.
+ */
diff --git a/gtk/src/shortcut.hg b/gtk/src/shortcut.hg
new file mode 100644
index 00000000..be4fb0ce
--- /dev/null
+++ b/gtk/src/shortcut.hg
@@ -0,0 +1,82 @@
+/* Copyright (C) 2020 The gtkmm Development Team
+ *
+ * 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.1 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/>.
+ */
+
+_CONFIGINCLUDE(gtkmmconfig.h)
+
+#include <glibmm/object.h>
+#include <gtkmm/shortcutaction.h>
+#include <gtkmm/shortcuttrigger.h>
+#include <gtk/gtk.h>
+
+_DEFS(gtkmm,gtk)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gtk
+{
+/** An object describing a keyboard shortcut.
+ *
+ * %Gtk::Shortcut is the low level object used for managing keyboard shortcuts.
+ * It contains a description of how to trigger the shortcut via a
+ * Gtk::ShortcutTrigger and a way to activate the shortcut on a widget
+ * via Gtk::ShortcutAction.
+ *
+ * The actual work is usually done via Gtk::ShortcutController, which
+ * decides if and when to activate a shortcut. Using that controller
+ * directly however is rarely necessary as various higher level
+ * convenience APIs exist on Widgets that make it easier to use
+ * shortcuts in GTK.
+ *
+ * %Gtk::Shortcut does provide functionality to make it easy for users
+ * to work with shortcuts, either by providing informational strings
+ * for display purposes or by allowing shortcuts to be configured.
+ *
+ * @see Gtk::ShortcutController, Gtk::ShortcutAction, Gtk::ShortcutTrigger
+
+ * @ingroup Gestures
+ * @newin{3,98}
+ */
+class GTKMM_API Shortcut : public Glib::Object
+{
+  _CLASS_GOBJECT(Shortcut, GtkShortcut, GTK_SHORTCUT, Glib::Object, GObject, , , GTKMM_API)
+  _STRUCT_NOT_HIDDEN
+protected:
+  _WRAP_CTOR(Shortcut(const Glib::RefPtr<const ShortcutTrigger>& trigger,
+    const Glib::RefPtr<const ShortcutAction>& action), gtk_shortcut_new)
+  _IGNORE(gtk_shortcut_new_with_arguments)
+
+public:
+  _WRAP_CREATE(const Glib::RefPtr<const ShortcutTrigger>& trigger,
+    const Glib::RefPtr<const ShortcutAction>& action)
+
+  // gtk_shortcut_set_trigger() and gtk_shortcut_set_action() don't take a ref (transfer full).
+#m4 _CONVERSION(`const Glib::RefPtr<const ShortcutTrigger>&', `GtkShortcutTrigger*', 
`Glib::unwrap_copy(std::const_pointer_cast<ShortcutTrigger>($3))')
+#m4 _CONVERSION(`const Glib::RefPtr<const ShortcutAction>&', `GtkShortcutAction*', 
`Glib::unwrap_copy(std::const_pointer_cast<ShortcutAction>($3))')
+#m4 _CONVERSION(`GVariant*',`Glib::VariantBase',`Glib::wrap($3, true)')
+  // ShortcutTrigger, ShortcutAction and Glib::VariantBase are immutable.
+  // No need for non-const get-methods.
+  _WRAP_METHOD(Glib::RefPtr<ShortcutTrigger> get_trigger() const, gtk_shortcut_get_trigger, refreturn)
+  _WRAP_METHOD(void set_trigger(const Glib::RefPtr<const ShortcutTrigger>& trigger), 
gtk_shortcut_set_trigger)
+  _WRAP_METHOD(Glib::RefPtr<ShortcutAction> get_action() const, gtk_shortcut_get_action, refreturn)
+  _WRAP_METHOD(void set_trigger(const Glib::RefPtr<const ShortcutAction>& action), gtk_shortcut_set_action)
+  _WRAP_METHOD(Glib::VariantBase get_arguments() const, gtk_shortcut_get_arguments)
+  _WRAP_METHOD(void set_arguments(const Glib::VariantBase& args) const, gtk_shortcut_set_arguments)
+
+  _WRAP_PROPERTY("trigger", Glib::RefPtr<ShortcutTrigger>)
+  _WRAP_PROPERTY("action", Glib::RefPtr<ShortcutAction>)
+  _WRAP_PROPERTY("arguments", Glib::VariantBase)
+};
+
+} //namespace Gtk
diff --git a/gtk/src/shortcutaction.ccg b/gtk/src/shortcutaction.ccg
new file mode 100644
index 00000000..36d04682
--- /dev/null
+++ b/gtk/src/shortcutaction.ccg
@@ -0,0 +1,54 @@
+/* Copyright (C) 2020 The gtkmm Development Team
+ *
+ * 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.1 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/>.
+ */
+
+#include <gtk/gtk.h>
+#include <gtkmm/widget.h>
+
+namespace
+{
+gboolean SlotShortcut_callback(GtkWidget* widget, GVariant* args, gpointer user_data)
+{
+  auto the_slot = static_cast<Gtk::CallbackAction::SlotShortcut*>(user_data);
+
+  try
+  {
+    return (*the_slot)(*Glib::wrap(widget, false), Glib::wrap(args, true));
+  }
+  catch (...)
+  {
+    Glib::exception_handlers_invoke();
+  }
+  return false;
+}
+
+} // anonymous namespace
+
+namespace Gtk
+{
+
+CallbackAction::CallbackAction(const SlotShortcut& slot)
+:
+  // Mark this class as non-derived to allow C++ vfuncs to be skipped.
+  Glib::ObjectBase(nullptr),
+  // Create a copy of the slot object. A pointer to this will be passed
+  // through the callback's user_data parameter. It will be deleted
+  // when Glib::destroy_notify_delete<SlotShortcut>() is called.
+  ShortcutAction(gtk_callback_action_new(&SlotShortcut_callback, new SlotShortcut(slot),
+    &Glib::destroy_notify_delete<SlotShortcut>))
+{
+}
+
+} // namespace Gtk
diff --git a/gtk/src/shortcutaction.hg b/gtk/src/shortcutaction.hg
new file mode 100644
index 00000000..3e6e43e6
--- /dev/null
+++ b/gtk/src/shortcutaction.hg
@@ -0,0 +1,183 @@
+/* Copyright (C) 2020 The gtkmm Development Team
+ *
+ * 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.1 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/>.
+ */
+
+_CONFIGINCLUDE(gtkmmconfig.h)
+
+#include <glibmm/object.h>
+_DEFS(gtkmm,gtk)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gtk
+{
+class GTKMM_API Widget;
+
+/** Tracking if shortcuts should be activated.
+ *
+ * %Gtk::ShortcutAction is the object used to describe what a Gtk::Shortcut should
+ * do when triggered. To activate a %ShortcutAction manually, activate() can be called.
+ *
+ * ShortcutActions contain methods that allow easy presentation to end
+ * users as well as being printed for debugging.
+ *
+ * All ShortcutActions are immutable, you can only specify their properties
+ * during construction. If you want to change an action, you have to replace it
+ * with a new one. If you need to pass arguments to an action, these are specified
+ * by the higher-level Gtk::Shortcut object.
+ *
+ * GTK provides various actions:
+ *
+ *  - Gtk::MnemonicAction: a shortcut action that calls Gtk::Widget::mnemonic_activate()
+ *  - Gtk::CallbackAction: a shortcut action that invokes a given callback
+ *  - Gtk::SignalAction: a shortcut action that emits a given signal
+ *  - Gtk::ActivateAction: a shortcut action that calls Gtk::Widget::activate()
+ *  - Gtk::NamedAction: a shortcut action that calls Gtk::Widget::activate_action()
+ *  - Gtk::NothingAction: a shortcut action that does nothing
+ *
+ * @see Gtk::Shortcut
+ * @ingroup Gestures
+ * @newin{3,98}
+ */
+class GTKMM_API ShortcutAction : public Glib::Object
+{
+  _CLASS_GOBJECT(ShortcutAction, GtkShortcutAction, GTK_SHORTCUT_ACTION, Glib::Object, GObject, , , 
GTKMM_API)
+protected:
+  _CTOR_DEFAULT()
+
+public:
+  _WRAP_ENUM(Flags, GtkShortcutActionFlags, decl_prefix GTKMM_API)
+
+  _WRAP_METHOD(static Glib::RefPtr<ShortcutAction> parse_string(const Glib::ustring& string),
+    gtk_shortcut_action_parse_string)
+
+  /** Prints the given action into a human-readable string.
+   *
+   * This is meant for debugging and logging.
+   * The form of the representation may change at any time and is
+   * not guaranteed to stay identical.
+   *
+   * @return A new string.
+   */
+  _WRAP_METHOD(Glib::ustring to_string() const, gtk_shortcut_action_to_string)
+  _IGNORE(gtk_shortcut_action_print)
+
+  _WRAP_METHOD(bool activate(Widget& widget{.}, Flags flags{.} = static_cast<Flags>(0),
+    const Glib::VariantBase& args{.} = {}), gtk_shortcut_action_activate)
+};
+
+#m4begin
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<NothingAction>', `Glib::wrap(GTK_NOTHING_ACTION($3))')
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<CallbackAction>', `Glib::wrap(GTK_CALLBACK_ACTION($3))')
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<MnemonicAction>', `Glib::wrap(GTK_MNEMONIC_ACTION($3))')
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<ActivateAction>', `Glib::wrap(GTK_ACTIVATE_ACTION($3))')
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<SignalAction>', `Glib::wrap(GTK_SIGNAL_ACTION($3))')
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<NamedAction>', `Glib::wrap(GTK_NAMED_ACTION($3))')
+#m4end
+
+/** A Gtk::ShortcutAction that does nothing.
+ */
+class GTKMM_API NothingAction : public ShortcutAction
+{
+  _CLASS_GOBJECT(NothingAction, GtkNothingAction, GTK_NOTHING_ACTION, ShortcutAction, GtkShortcutAction, , , 
GTKMM_API)
+protected:
+  _CTOR_DEFAULT()
+
+public:
+  _WRAP_METHOD(static Glib::RefPtr<NothingAction> get(), gtk_nothing_action_get, refreturn)
+};
+
+/** A Gtk::ShortcutAction that invokes a callback.
+ */
+class GTKMM_API CallbackAction : public ShortcutAction
+{
+  _CLASS_GOBJECT(CallbackAction, GtkCallbackAction, GTK_CALLBACK_ACTION, ShortcutAction, GtkShortcutAction, 
, , GTKMM_API)
+public:
+  /** Slot for shortcuts based on user callbacks.
+   *
+   * For instance:
+   * @code
+   * void on_shortcut(Widget& widget, const Glib::VariantBase& args);
+   * @endcode
+   *
+   * @param widget The widget passed to the activation.
+   * @param args The arguments passed to the activation. Can be empty,
+   *             if there are no arguments.
+   */
+  using SlotShortcut = sigc::slot<bool(Widget&, const Glib::VariantBase&)>;
+
+  _WRAP_CREATE(const SlotShortcut& slot)
+
+protected:
+  explicit CallbackAction(const SlotShortcut& slot);
+  _IGNORE(gtk_callback_action_new)
+};
+
+/** A Gtk::ShortcutAction that calls Gtk::Widget::mnemonic_activate().
+ */
+class GTKMM_API MnemonicAction : public ShortcutAction
+{
+  _CLASS_GOBJECT(MnemonicAction, GtkMnemonicAction, GTK_MNEMONIC_ACTION, ShortcutAction, GtkShortcutAction, 
, , GTKMM_API)
+protected:
+  _CTOR_DEFAULT()
+
+public:
+  _WRAP_METHOD(static Glib::RefPtr<MnemonicAction> get(), gtk_mnemonic_action_get, refreturn)
+};
+
+/** A Gtk::ShortcutAction that calls Gtk::Widget::activate().
+ */
+class GTKMM_API ActivateAction : public ShortcutAction
+{
+  _CLASS_GOBJECT(ActivateAction, GtkActivateAction, GTK_ACTIVATE_ACTION, ShortcutAction, GtkShortcutAction, 
, , GTKMM_API)
+protected:
+  _CTOR_DEFAULT()
+
+public:
+  _WRAP_METHOD(static Glib::RefPtr<ActivateAction> get(), gtk_activate_action_get, refreturn)
+};
+
+/** A Gtk::ShortcutAction that emits a signal.
+ */
+class GTKMM_API SignalAction : public ShortcutAction
+{
+  _CLASS_GOBJECT(SignalAction, GtkSignalAction, GTK_SIGNAL_ACTION, ShortcutAction, GtkShortcutAction, , , 
GTKMM_API)
+protected:
+  _WRAP_CTOR(SignalAction(const Glib::ustring& signal_name), gtk_signal_action_new)
+
+public:
+  _WRAP_CREATE(const Glib::ustring& signal_name)
+
+  _WRAP_METHOD(Glib::ustring get_signal_name() const, gtk_signal_action_get_signal_name)
+
+  _WRAP_PROPERTY("signal-name", Glib::ustring)
+};
+
+/** A Gtk::ShortcutAction that activates an action by name.
+ */
+class GTKMM_API NamedAction : public ShortcutAction
+{
+  _CLASS_GOBJECT(NamedAction, GtkNamedAction, GTK_NAMED_ACTION, ShortcutAction, GtkShortcutAction, , , 
GTKMM_API)
+protected:
+  _WRAP_CTOR(NamedAction(const Glib::ustring& action_name), gtk_named_action_new)
+
+public:
+  _WRAP_CREATE(const Glib::ustring& action_name)
+
+  _WRAP_METHOD(Glib::ustring get_action_name() const, gtk_named_action_get_action_name)
+
+  _WRAP_PROPERTY("action-name", Glib::ustring)
+};
+
+} //namespace Gtk
diff --git a/gtk/src/shortcutcontroller.ccg b/gtk/src/shortcutcontroller.ccg
index 606da665..57b87fdc 100644
--- a/gtk/src/shortcutcontroller.ccg
+++ b/gtk/src/shortcutcontroller.ccg
@@ -15,16 +15,3 @@
  */
 
 #include <gtk/gtk.h>
-
-namespace Gtk
-{
-#if 0 // TODO: Activate when there is a Gtk::Shortcut class.
-void ShortcutController::add_shortcut(const Glib::RefPtr<Shortcut>& shortcut)
-{
-  // gtk_shortcut_controller_add_shortcut() does not take a ref (transfer full).
-  if (shortcut)
-    shortcut->reference();
-  gtk_shortcut_controller_add_shortcut(gobj(), Glib::unwrap(shortcut));
-}
-#endif
-} // namespace Gtk
diff --git a/gtk/src/shortcutcontroller.hg b/gtk/src/shortcutcontroller.hg
index 35f74be2..8c26a4c4 100644
--- a/gtk/src/shortcutcontroller.hg
+++ b/gtk/src/shortcutcontroller.hg
@@ -17,8 +17,9 @@
 #include <gtkmm/eventcontroller.h>
 #include <gtkmm/buildable.h>
 #include <giomm/listmodel.h>
-#include <gtkmm/enums.h>
 #include <gdkmm/types.h>
+#include <gtkmm/enums.h>
+#include <gtkmm/shortcut.h>
 
 _DEFS(gtkmm,gtk)
 _PINCLUDE(gtkmm/private/eventcontroller_p.h)
@@ -100,11 +101,13 @@ public:
   _WRAP_METHOD(void set_scope(ShortcutScope scope), gtk_shortcut_controller_set_scope)
   _WRAP_METHOD(ShortcutScope set_scope() const, gtk_shortcut_controller_get_scope)
 
-  // TODO: Activate when there is a Gtk::Shortcut class.
-  //_WRAP_METHOD_DOCS_ONLY(gtk_shortcut_controller_add_shortcut)
-  //void add_shortcut(const Glib::RefPtr<Shortcut>& shortcut);
-  //_WRAP_METHOD(void remove_shortcut(const Glib::RefPtr<const Shortcut>& shortcut),
-  //  gtk_shortcut_controller_remove_shortcut)
+  // gtk_shortcut_controller_add_shortcut() does not take a ref (transfer full).
+#m4 _CONVERSION(`const Glib::RefPtr<Shortcut>&', `GtkShortcut*', `Glib::unwrap_copy($3)')
+  _WRAP_METHOD(void add_shortcut(const Glib::RefPtr<Shortcut>& shortcut),
+    gtk_shortcut_controller_add_shortcut)
+#m4 _CONVERSION(`const Glib::RefPtr<const Shortcut>&', `GtkShortcut*', __CONVERT_CONST_REFPTR_TO_P)
+  _WRAP_METHOD(void remove_shortcut(const Glib::RefPtr<const Shortcut>& shortcut),
+    gtk_shortcut_controller_remove_shortcut)
 
   _WRAP_PROPERTY("mnemonic-modifiers", Gdk::ModifierType)
   _WRAP_PROPERTY("scope", ShortcutScope)
diff --git a/gtk/src/shortcuttrigger.ccg b/gtk/src/shortcuttrigger.ccg
new file mode 100644
index 00000000..57b87fdc
--- /dev/null
+++ b/gtk/src/shortcuttrigger.ccg
@@ -0,0 +1,17 @@
+/* Copyright (C) 2020 The gtkmm Development Team
+ *
+ * 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.1 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/>.
+ */
+
+#include <gtk/gtk.h>
diff --git a/gtk/src/shortcuttrigger.hg b/gtk/src/shortcuttrigger.hg
new file mode 100644
index 00000000..9c3bcdfe
--- /dev/null
+++ b/gtk/src/shortcuttrigger.hg
@@ -0,0 +1,156 @@
+/* Copyright (C) 2020 The gtkmm Development Team
+ *
+ * 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.1 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/>.
+ */
+
+_CONFIGINCLUDE(gtkmmconfig.h)
+
+#include <glibmm/object.h>
+#include <gdkmm/display.h>
+#include <gdkmm/event.h>
+#include <gdkmm/types.h>
+
+_DEFS(gtkmm,gtk)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gtk
+{
+/** Triggers to track if shortcuts should be activated.
+ *
+ * %Gtk::ShortcutTrigger is the object used to track if a Gtk::Shortcut should be
+ * activated. For this purpose, trigger() can be called on a Gdk::Event.
+ *
+ * ShortcutTriggers contain methods that allow easy presentation to end
+ * users as well as being printed for debugging.
+ *
+ * All ShortcutTriggers are immutable, you can only specify their properties
+ * during construction. If you want to change a trigger, you have to replace it
+ * with a new one.
+ *
+ * @see Gtk::Shortcut
+ * @ingroup Gestures
+ * @newin{3,98}
+ */
+class GTKMM_API ShortcutTrigger : public Glib::Object
+{
+  _CLASS_GOBJECT(ShortcutTrigger, GtkShortcutTrigger, GTK_SHORTCUT_TRIGGER, Glib::Object, GObject, , , 
GTKMM_API)
+protected:
+  _CTOR_DEFAULT()
+
+public:
+  _WRAP_METHOD(static Glib::RefPtr<ShortcutTrigger> parse_string(const Glib::ustring& string),
+    gtk_shortcut_trigger_parse_string)
+
+  /** Prints the given trigger into a human-readable string.
+   *
+   * This is meant for debugging and logging.
+   * The form of the representation may change at any time and is
+   * not guaranteed to stay identical.
+   *
+   * @return A new string.
+   */
+  _WRAP_METHOD(Glib::ustring to_string() const, gtk_shortcut_trigger_to_string)
+  _IGNORE(gtk_shortcut_trigger_print)
+
+  _WRAP_METHOD(Glib::ustring to_label(const Glib::RefPtr<const Gdk::Display>& display) const,
+    gtk_shortcut_trigger_to_label)
+  _IGNORE(gtk_shortcut_trigger_print_label)
+
+  // Is this useful? _WRAP_METHOD(guint hash() const, gtk_shortcut_trigger_hash)
+
+#m4 _CONVERSION(`const Glib::RefPtr<const ShortcutTrigger>&', `gconstpointer', __CONVERT_REFPTR_TO_P)
+  _WRAP_METHOD(bool equal(const Glib::RefPtr<const ShortcutTrigger>& trigger2) const,
+    gtk_shortcut_trigger_equal)
+  _WRAP_METHOD(int compare(const Glib::RefPtr<const ShortcutTrigger>& trigger2) const,
+    gtk_shortcut_trigger_compare)
+
+  _WRAP_METHOD(Gdk::KeyMatch trigger(const Glib::RefPtr<const Gdk::Event>& event,
+    bool enable_mnemonics) const, gtk_shortcut_trigger_trigger)
+};
+
+#m4begin
+_CONVERSION(`GtkShortcutTrigger*',`Glib::RefPtr<NeverTrigger>', `Glib::wrap(GTK_NEVER_TRIGGER($3))')
+_CONVERSION(`GtkShortcutTrigger*',`Glib::RefPtr<KeyvalTrigger>', `Glib::wrap(GTK_KEYVAL_TRIGGER($3))')
+_CONVERSION(`GtkShortcutTrigger*',`Glib::RefPtr<MnemonicTrigger>', `Glib::wrap(GTK_MNEMONIC_TRIGGER($3))')
+_CONVERSION(`GtkShortcutTrigger*',`Glib::RefPtr<AlternativeTrigger>', 
`Glib::wrap(GTK_ALTERNATIVE_TRIGGER($3))')
+#m4end
+
+/** A Gtk::ShortcutTrigger that never triggers.
+ */
+class GTKMM_API NeverTrigger : public ShortcutTrigger
+{
+  _CLASS_GOBJECT(NeverTrigger, GtkNeverTrigger, GTK_NEVER_TRIGGER, ShortcutTrigger, GtkShortcutTrigger, , , 
GTKMM_API)
+protected:
+  _CTOR_DEFAULT()
+
+public:
+  _WRAP_METHOD(static Glib::RefPtr<NeverTrigger> get(), gtk_never_trigger_get, refreturn)
+};
+
+/** A Gtk::ShortcutTrigger that triggers when a specific keyval
+ * and (optionally) modifiers are pressed.
+ */
+class GTKMM_API KeyvalTrigger : public ShortcutTrigger
+{
+  _CLASS_GOBJECT(KeyvalTrigger, GtkKeyvalTrigger, GTK_KEYVAL_TRIGGER, ShortcutTrigger, GtkShortcutTrigger, , 
, GTKMM_API)
+protected:
+  _WRAP_CTOR(KeyvalTrigger(guint keyval, Gdk::ModifierType modifiers), gtk_keyval_trigger_new)
+
+public:
+  _WRAP_CREATE(guint keyval, Gdk::ModifierType modifiers = static_cast<Gdk::ModifierType>(0))
+
+  _WRAP_METHOD(guint get_keyval() const, gtk_keyval_trigger_get_keyval)
+  _WRAP_METHOD(Gdk::ModifierType get_modifiers() const, gtk_keyval_trigger_get_modifiers)
+
+  _WRAP_PROPERTY("keyval", guint)
+  _WRAP_PROPERTY("modifiers", Gdk::ModifierType)
+};
+
+/** A Gtk::ShortcutTrigger that triggers when a specific mnemonic is pressed.
+ */
+class GTKMM_API MnemonicTrigger : public ShortcutTrigger
+{
+  _CLASS_GOBJECT(MnemonicTrigger, GtkMnemonicTrigger, GTK_MNEMONIC_TRIGGER, ShortcutTrigger, 
GtkShortcutTrigger, , , GTKMM_API)
+protected:
+  _WRAP_CTOR(MnemonicTrigger(guint keyval), gtk_mnemonic_trigger_new)
+
+public:
+  _WRAP_CREATE(guint keyval)
+
+  _WRAP_METHOD(guint get_keyval() const, gtk_mnemonic_trigger_get_keyval)
+
+  _WRAP_PROPERTY("keyval", guint)
+};
+
+/** A Gtk::ShortcutTrigger that triggers when either of two ShortcutTriggers trigger.
+ */
+class GTKMM_API AlternativeTrigger : public ShortcutTrigger
+{
+  _CLASS_GOBJECT(AlternativeTrigger, GtkAlternativeTrigger, GTK_ALTERNATIVE_TRIGGER, ShortcutTrigger, 
GtkShortcutTrigger, , , GTKMM_API)
+protected:
+  _WRAP_CTOR(AlternativeTrigger(const Glib::RefPtr<const ShortcutTrigger>& first,
+    const Glib::RefPtr<const ShortcutTrigger>& second), gtk_alternative_trigger_new)
+
+public:
+  _WRAP_CREATE(const Glib::RefPtr<const ShortcutTrigger>& first,
+    const Glib::RefPtr<const ShortcutTrigger>& second)
+
+  _WRAP_METHOD(Glib::RefPtr<const ShortcutTrigger> get_first() const, gtk_alternative_trigger_get_first, 
refreturn)
+  _WRAP_METHOD(Glib::RefPtr<const ShortcutTrigger> get_second() const, gtk_alternative_trigger_get_second, 
refreturn)
+
+  _WRAP_PROPERTY("first", Glib::RefPtr<const ShortcutTrigger>)
+  _WRAP_PROPERTY("second", Glib::RefPtr<const ShortcutTrigger>)
+};
+
+} //namespace Gtk
diff --git a/gtk/src/widget.hg b/gtk/src/widget.hg
index 2ad96d54..36a9c75f 100644
--- a/gtk/src/widget.hg
+++ b/gtk/src/widget.hg
@@ -448,12 +448,12 @@ public:
    * type, as returned by Gio::Action::get_parameter_type().
    *
    * @param name The name of the action to activate.
-   * @param args Parameters to use. If the action does not expect parameters,
-   *             use the activate_action() overload without the @a args argument.
+   * @param args Parameters to use, or an empty (invalid) Glib::VariantBase
+   *             if the action does not expect parameters.
    * @return <tt>true</tt> if the action was activated, <tt>false</tt> if the
    *         action does not exist.
    */
-  _WRAP_METHOD(bool activate_action(const Glib::ustring& name, const Glib::VariantBase& args{?}), 
gtk_widget_activate_action_variant)
+  _WRAP_METHOD(bool activate_action(const Glib::ustring& name, const Glib::VariantBase& args = {}), 
gtk_widget_activate_action_variant)
   _IGNORE(gtk_widget_activate_action)
   _WRAP_METHOD(void activate_default(), gtk_widget_activate_default)
 
diff --git a/tools/extra_defs_gen/generate_defs_gtk.cc b/tools/extra_defs_gen/generate_defs_gtk.cc
index aa13026c..96bc2212 100644
--- a/tools/extra_defs_gen/generate_defs_gtk.cc
+++ b/tools/extra_defs_gen/generate_defs_gtk.cc
@@ -47,6 +47,7 @@ int main(int /* argc */, char** /* argv */)
             << get_defs( GTK_TYPE_ACTIONABLE )
             << get_defs( GTK_TYPE_ACTION_BAR )
             << get_defs( GTK_TYPE_ADJUSTMENT )
+            << get_defs( GTK_TYPE_ALTERNATIVE_TRIGGER )
             << get_defs( GTK_TYPE_APP_CHOOSER )
             << get_defs( GTK_TYPE_APP_CHOOSER_BUTTON )
             << get_defs( GTK_TYPE_APP_CHOOSER_DIALOG )
@@ -144,6 +145,7 @@ int main(int /* argc */, char** /* argv */)
             << get_defs( GTK_TYPE_ICON_PAINTABLE )
             << get_defs( GTK_TYPE_ICON_THEME )
             << get_defs( GTK_TYPE_ICON_VIEW )
+            << get_defs( GTK_TYPE_KEYVAL_TRIGGER )
             << get_defs( GTK_TYPE_LABEL )
             << get_defs( GTK_TYPE_LAYOUT_CHILD )
             << get_defs( GTK_TYPE_LEVEL_BAR)
@@ -158,7 +160,9 @@ int main(int /* argc */, char** /* argv */)
             << get_defs( GTK_TYPE_MEDIA_STREAM )
             << get_defs( GTK_TYPE_MENU_BUTTON )
             << get_defs( GTK_TYPE_MESSAGE_DIALOG )
+            << get_defs( GTK_TYPE_MNEMONIC_TRIGGER )
             << get_defs( GTK_TYPE_MULTI_SELECTION )
+            << get_defs( GTK_TYPE_NAMED_ACTION )
             << get_defs( GTK_TYPE_NATIVE_DIALOG )
             << get_defs( GTK_TYPE_NO_SELECTION )
             << get_defs( GTK_TYPE_NOTEBOOK )
@@ -208,6 +212,7 @@ int main(int /* argc */, char** /* argv */)
             << get_defs( GTK_TYPE_SHORTCUTS_SECTION )
             << get_defs( GTK_TYPE_SHORTCUTS_SHORTCUT )
             << get_defs( GTK_TYPE_SHORTCUTS_WINDOW )
+            << get_defs( GTK_TYPE_SIGNAL_ACTION )
             << get_defs( GTK_TYPE_SIGNAL_LIST_ITEM_FACTORY )
             << get_defs( GTK_TYPE_SINGLE_SELECTION )
             << get_defs( GTK_TYPE_SIZE_GROUP )
diff --git a/tools/m4/convert_gdk.m4 b/tools/m4/convert_gdk.m4
index 8fead3c7..538cf659 100644
--- a/tools/m4/convert_gdk.m4
+++ b/tools/m4/convert_gdk.m4
@@ -121,9 +121,6 @@ _CONVERSION(`const Glib::RefPtr<DrawContext>&',`GdkDrawContext*',__CONVERT_REFPT
 _CONVERSION(`const Glib::RefPtr<DrawingContext>&',`GdkDrawingContext*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Bitmap>&',`GdkBitmap*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Gdk::Bitmap>&',`GdkBitmap*',__CONVERT_REFPTR_TO_P)
-_CONVERSION(`const Glib::RefPtr<Drawable>&',`GdkDrawable*',__CONVERT_REFPTR_TO_P)
-_CONVERSION(`const Glib::RefPtr<Gdk::Drawable>&',`GdkDrawable*',__CONVERT_REFPTR_TO_P)
-_CONVERSION(`const Glib::RefPtr<const Drawable>&',`GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
 _CONVERSION(`const Glib::RefPtr<const Gdk::Paintable>&',`GdkPaintable*',__CONVERT_CONST_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Gdk::Paintable>&',`GdkPaintable*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Pixbuf>&',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
@@ -138,6 +135,7 @@ _CONVERSION(`const Glib::RefPtr<Gdk::Drag>&',`GdkDrag*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Gdk::Drop>&',`GdkDrop*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Display>&',`GdkDisplay*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Gdk::Display>&',`GdkDisplay*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Gdk::Display>&',`GdkDisplay*',__CONVERT_CONST_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Gdk::Device>&',`GdkDevice*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<Device>&',`GdkDevice*',__CONVERT_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<const Device>&',`GdkDevice*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Device))
@@ -171,9 +169,6 @@ _CONVERSION(`const Glib::RefPtr<const Surface>&', `GdkSurface*',__CONVERT_CONST_
 _CONVERSION(`const Glib::RefPtr<const Gdk::GLContext>&', 
`GdkGLContext*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::GLContext))
 _CONVERSION(`const Glib::RefPtr<const GLContext>&', 
`GdkGLContext*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::GLContext))
 _CONVERSION(`const Glib::RefPtr<const Gdk::Bitmap>&', 
`GdkBitmap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Bitmap))
-#_CONVERSION(`const Glib::RefPtr<const Gdk::Drawable>&', 
`GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Drawable))
-#_CONVERSION(`const Glib::RefPtr<const Drawable>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
-#_CONVERSION(`const Glib::RefPtr<const Display>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
 
 _CONVERSION(`GdkPopupLayout*',`Glib::RefPtr<PopupLayout>', `Glib::wrap($3)')
 _CONVERSION(`GdkToplevelLayout*',`Glib::RefPtr<ToplevelLayout>', `Glib::wrap($3)')
diff --git a/tools/m4/convert_gtk.m4 b/tools/m4/convert_gtk.m4
index 7f1c20c7..9af2fdc2 100644
--- a/tools/m4/convert_gtk.m4
+++ b/tools/m4/convert_gtk.m4
@@ -82,6 +82,7 @@ _CONV_ENUM(Gtk,PropagationPhase)
 _CONV_ENUM(Gtk,RevealerTransitionType)
 _CONV_ENUM(Gtk,ScrollType)
 _CONV_ENUM(Gtk,SelectionMode)
+_CONV_INCLASS_ENUM(Gtk,ShortcutAction,Flags)
 _CONV_ENUM(Gtk,ShortcutScope)
 _CONV_ENUM(Gtk,ShortcutType)
 _CONV_INCLASS_ENUM(Gtk,SizeGroup,Mode)
@@ -424,7 +425,13 @@ _CONVERSION(`GtkShortcutsWindow*',`ShortcutsWindow*',__RP2P)
 _CONVERSION(`GtkShortcutsWindow*',`const ShortcutsWindow*',__RP2P)
 _CONVERSION(`ShortcutsWindow&',`GtkShortcutsWindow*',__FR2P)
 
+_CONVERSION(`GtkShortcutAction*',`Glib::RefPtr<ShortcutAction>', `Glib::wrap($3)')
+_CONVERSION(`GtkShortcutTrigger*',`Glib::RefPtr<ShortcutTrigger>', `Glib::wrap($3)')
+_CONVERSION(`GtkShortcutTrigger*',`Glib::RefPtr<const ShortcutTrigger>', `Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<const ShortcutAction>&', `GtkShortcutAction*', __CONVERT_CONST_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const ShortcutTrigger>&', `GtkShortcutTrigger*', __CONVERT_CONST_REFPTR_TO_P)
 _CONVERSION(`const Glib::RefPtr<ShortcutController>&', `GtkShortcutController*', __CONVERT_REFPTR_TO_P)
+
 _CONVERSION(`const Glib::RefPtr<Gtk::Snapshot>&', `GtkSnapshot*', __CONVERT_REFPTR_TO_P)
 
 #FlowBoxChild


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