[gtkmm] Gdk, Gtk: Update for the latest gtk4 (Gtk::Native, etc.)



commit 0efbb50c24200e15f0033d64b7854623d6fabe50
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Sat Jun 1 19:40:48 2019 +0200

    Gdk, Gtk: Update for the latest gtk4 (Gtk::Native, etc.)
    
    Gtk::Popover and Gtk::Window implements the Gtk::Native interface.
    Gtk::GestureMultiPress is renamed to GestureClick.
    Many gtk classes have been made final, which means that gtkmm can't
    override signal default handlers.

 .gitignore                                         |  6 +-
 demos/gtk-demo/example_change_display.cc           |  5 +-
 gdk/src/device.ccg                                 |  5 --
 gdk/src/device.hg                                  | 13 ----
 gdk/src/display.hg                                 |  2 -
 gdk/src/event.hg                                   |  2 +-
 gdk/src/events.ccg                                 | 40 ------------
 gdk/src/events.hg                                  | 30 ---------
 gdk/src/surface.hg                                 | 45 +++-----------
 gtk/gtkmm.h                                        |  2 +-
 gtk/src/aboutdialog.hg                             |  3 +-
 gtk/src/appchooserbutton.hg                        |  5 +-
 gtk/src/appchooserwidget.hg                        |  9 ++-
 gtk/src/assistant.hg                               |  9 +--
 gtk/src/calendar.hg                                | 15 ++---
 gtk/src/cellrendereraccel.hg                       |  7 ++-
 gtk/src/cellrenderertoggle.hg                      |  7 +--
 gtk/src/colorbutton.hg                             |  4 +-
 gtk/src/entrycompletion.ccg                        | 57 -----------------
 gtk/src/entrycompletion.hg                         | 28 ++-------
 gtk/src/enums.hg                                   |  1 -
 gtk/src/filechooserbutton.hg                       |  4 +-
 gtk/src/filelist.am                                |  3 +-
 gtk/src/flowbox.hg                                 |  6 +-
 gtk/src/fontbutton.hg                              |  3 +-
 .../{gesturemultipress.ccg => gestureclick.ccg}    |  4 +-
 gtk/src/{gesturemultipress.hg => gestureclick.hg}  | 12 ++--
 gtk/src/icontheme.hg                               |  3 +-
 gtk/src/iconview.hg                                |  5 +-
 gtk/src/infobar.hg                                 |  3 +-
 gtk/src/label.hg                                   |  3 +-
 gtk/src/levelbar.hg                                |  4 +-
 gtk/src/listbox.hg                                 |  7 ++-
 gtk/src/menubar.ccg                                |  2 +-
 gtk/src/menushell.ccg                              |  3 +-
 gtk/src/menutoolbutton.hg                          |  3 +-
 gtk/src/native.ccg                                 | 19 ++++++
 gtk/src/native.hg                                  | 72 ++++++++++++++++++++++
 gtk/src/notebook.hg                                |  9 +--
 gtk/src/overlay.hg                                 |  4 +-
 gtk/src/popover.hg                                 | 24 ++++----
 gtk/src/printer.hg                                 | 11 +---
 gtk/src/printjob.hg                                |  5 +-
 gtk/src/radiobutton.hg                             |  3 +-
 gtk/src/radiomenuitem.hg                           |  3 +-
 gtk/src/root.hg                                    |  8 +--
 gtk/src/searchentry.hg                             | 10 +--
 gtk/src/spinbutton.hg                              |  9 +--
 gtk/src/statusbar.hg                               |  5 +-
 gtk/src/switch.hg                                  |  3 +-
 gtk/src/texttagtable.hg                            | 11 ++--
 gtk/src/toolbar.hg                                 |  7 ++-
 gtk/src/treeselection.hg                           |  3 +-
 gtk/src/treeview.hg                                | 17 +++--
 gtk/src/treeviewcolumn.hg                          |  3 +-
 gtk/src/widget.ccg                                 |  7 ---
 gtk/src/widget.hg                                  | 34 ----------
 gtk/src/window.hg                                  | 13 ++--
 tools/extra_defs_gen/generate_defs_gtk.cc          |  2 +-
 tools/m4/convert_gtk.m4                            |  1 -
 60 files changed, 258 insertions(+), 385 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index fdaa32fd..c387590a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -285,12 +285,12 @@ gtk/gtkmm/frame.cc
 gtk/gtkmm/frame.h
 gtk/gtkmm/gesture.cc
 gtk/gtkmm/gesture.h
+gtk/gtkmm/gestureclick.cc
+gtk/gtkmm/gestureclick.h
 gtk/gtkmm/gesturedrag.cc
 gtk/gtkmm/gesturedrag.h
 gtk/gtkmm/gesturelongpress.cc
 gtk/gtkmm/gesturelongpress.h
-gtk/gtkmm/gesturemultipress.cc
-gtk/gtkmm/gesturemultipress.h
 gtk/gtkmm/gesturepan.cc
 gtk/gtkmm/gesturepan.h
 gtk/gtkmm/gesturerotate.cc
@@ -365,6 +365,8 @@ gtk/gtkmm/messagedialog.cc
 gtk/gtkmm/messagedialog.h
 gtk/gtkmm/modelbutton.cc
 gtk/gtkmm/modelbutton.h
+gtk/gtkmm/native.cc
+gtk/gtkmm/native.h
 gtk/gtkmm/nativedialog.cc
 gtk/gtkmm/nativedialog.h
 gtk/gtkmm/notebook.cc
diff --git a/demos/gtk-demo/example_change_display.cc b/demos/gtk-demo/example_change_display.cc
index b31bd2d1..bce4a62e 100644
--- a/demos/gtk-demo/example_change_display.cc
+++ b/demos/gtk-demo/example_change_display.cc
@@ -301,7 +301,7 @@ Gtk::Window* Example_ChangeDisplay::query_for_toplevel(
       false, cursor) == Gdk::GrabStatus::SUCCESS)
   {
     m_popup_clicked = false;
-    auto refGesture = Gtk::GestureMultiPress::create();
+    auto refGesture = Gtk::GestureClick::create();
     pPopup->add_controller(refGesture);
     refGesture->set_button(0); // Any button
     refGesture->signal_released().connect(
@@ -332,7 +332,7 @@ Gtk::Widget* Example_ChangeDisplay::find_toplevel_at_pointer(const Glib::RefPtr<
   if (!refPointerSurface)
     return nullptr;
 
-  return Gtk::Root::get_for_surface(refPointerSurface);
+  return Gtk::Native::get_for_surface(refPointerSurface);
 }
 
 void Example_ChangeDisplay::on_popup_button_released(int /* n_press */, double /* x */, double /* y */)
@@ -346,7 +346,6 @@ Popup::Popup(const Glib::RefPtr<Gdk::Display>& display, const Glib::ustring& pro
 {
   set_display(display);
   set_modal(true);
-  set_position(Gtk::WindowPosition::CENTER);
 
   m_Frame.set_shadow_type(Gtk::ShadowType::OUT);
   add(m_Frame);
diff --git a/gdk/src/device.ccg b/gdk/src/device.ccg
index b03f185d..66d8f065 100644
--- a/gdk/src/device.ccg
+++ b/gdk/src/device.ccg
@@ -39,11 +39,6 @@ std::vector<TimeCoord> Device::get_history(const Glib::RefPtr<Surface>& surface,
   return Glib::ArrayHandler<TimeCoord, TimeCoordPtrTraits>::array_to_vector(coords, events_count, 
Glib::OWNERSHIP_DEEP);
 }
 
-void Device::get_position(double& x, double& y) const
-{
-  gdk_device_get_position(const_cast<GdkDevice*>(gobj()), &x, &y);
-}
-
 Glib::RefPtr<Surface> Device::get_surface_at_position()
 {
   auto retvalue = Glib::wrap(gdk_device_get_surface_at_position(gobj(), nullptr, nullptr));
diff --git a/gdk/src/device.hg b/gdk/src/device.hg
index 5b3a8ab0..eafe2bbb 100644
--- a/gdk/src/device.hg
+++ b/gdk/src/device.hg
@@ -107,19 +107,6 @@ public:
 
   _WRAP_METHOD(Type get_device_type() const, gdk_device_get_device_type)
 
-  /** Gets the current location of the device in double precision.
-   * As a slave device coordinates are those of its master pointer,
-   * this function may not be called on devices of type Gdk::Device::Type::SLAVE,
-   * unless there is an ongoing grab on them. See grab().
-   *
-   * @param[out] x This will contain the root window X coordinate of the device.
-   * @param[out] y This will contain the root window X coordinate of the device.
-   *
-   * @newin{3,10}
-   */
-  void get_position(double& x, double& y) const;
-  _IGNORE(gdk_device_get_position)
-
   _WRAP_METHOD(Glib::RefPtr<Surface> get_surface_at_position(double& win_x, double& win_y),
     gdk_device_get_surface_at_position, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Surface> get_surface_at_position(double& win_x, double& win_y) const,
diff --git a/gdk/src/display.hg b/gdk/src/display.hg
index f14da602..31927228 100644
--- a/gdk/src/display.hg
+++ b/gdk/src/display.hg
@@ -109,8 +109,6 @@ public:
   _WRAP_METHOD(Glib::RefPtr<const Monitor> get_monitor(int monitor_num) const, gdk_display_get_monitor, 
refreturn, constversion)
   _WRAP_METHOD(Glib::RefPtr<Monitor> get_primary_monitor(), gdk_display_get_primary_monitor, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Monitor> get_primary_monitor() const, gdk_display_get_primary_monitor, 
refreturn, constversion)
-  _WRAP_METHOD(Glib::RefPtr<Monitor> get_monitor_at_point(int x, int y), gdk_display_get_monitor_at_point, 
refreturn)
-  _WRAP_METHOD(Glib::RefPtr<const Monitor> get_monitor_at_point(int x, int y) const, 
gdk_display_get_monitor_at_point, refreturn, constversion)
   _WRAP_METHOD(Glib::RefPtr<Monitor> get_monitor_at_surface(const Glib::RefPtr<Surface>& surface), 
gdk_display_get_monitor_at_surface, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Monitor> get_monitor_at_surface(const Glib::RefPtr<Surface>& surface) 
const, gdk_display_get_monitor_at_surface, refreturn, constversion)
 
diff --git a/gdk/src/event.hg b/gdk/src/event.hg
index ff87641e..4c36a8a3 100644
--- a/gdk/src/event.hg
+++ b/gdk/src/event.hg
@@ -106,7 +106,7 @@ public:
     gdk_event_get_keycode, gdk_event_get_scancode, gdk_event_get_key_group,
     gdk_event_get_key_is_modifier, gdk_event_get_button,
     gdk_event_get_click_count, gdk_event_triggers_context_menu,
-    gdk_event_get_coords, gdk_event_get_root_coords, gdk_event_get_scroll_deltas,
+    gdk_event_get_coords, gdk_event_get_scroll_deltas,
     gdk_event_get_scroll_direction, gdk_event_is_scroll_stop_event, gdk_event_get_axis,
     gdk_event_get_event_sequence, gdk_event_get_touch_emulating_pointer,
     gdk_event_get_pointer_emulated, gdk_event_get_drop, gdk_event_get_crossing_mode,
diff --git a/gdk/src/events.ccg b/gdk/src/events.ccg
index f9cd53b7..4bf21a33 100644
--- a/gdk/src/events.ccg
+++ b/gdk/src/events.ccg
@@ -93,11 +93,6 @@ void EventButton::get_coords(double& x_win, double& y_win) const
   gdk_event_get_coords(Event::gobj(), &x_win, &y_win);
 }
 
-void EventButton::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 bool EventButton::get_axis(Gdk::AxisUse axis_use, double& value) const
 {
   return gdk_event_get_axis(Event::gobj(), static_cast<GdkAxisUse>(axis_use), &value);
@@ -142,11 +137,6 @@ void EventScroll::get_coords(double& x_win, double& y_win) const
   gdk_event_get_coords(Event::gobj(), &x_win, &y_win);
 }
 
-void EventScroll::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 bool EventScroll::get_scroll_deltas(double& delta_x, double& delta_y) const
 {
   return gdk_event_get_scroll_deltas(Event::gobj(), &delta_x, &delta_y);
@@ -181,11 +171,6 @@ void EventMotion::get_coords(double& x_win, double& y_win) const
   gdk_event_get_coords(Event::gobj(), &x_win, &y_win);
 }
 
-void EventMotion::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 bool EventMotion::get_axis(Gdk::AxisUse axis_use, double& value) const
 {
   return gdk_event_get_axis(Event::gobj(), static_cast<GdkAxisUse>(axis_use), &value);
@@ -218,11 +203,6 @@ void EventTouch::get_coords(double& x_win, double& y_win) const
   gdk_event_get_coords(Event::gobj(), &x_win, &y_win);
 }
 
-void EventTouch::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 bool EventTouch::get_axis(Gdk::AxisUse axis_use, double& value) const
 {
   return gdk_event_get_axis(Event::gobj(), static_cast<GdkAxisUse>(axis_use), &value);
@@ -262,11 +242,6 @@ void EventCrossing::get_coords(double& x_win, double& y_win) const
   gdk_event_get_coords(Event::gobj(), &x_win, &y_win);
 }
 
-void EventCrossing::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 CrossingMode EventCrossing::get_crossing_mode() const
 {
   GdkCrossingMode mode = GDK_CROSSING_NORMAL;
@@ -304,11 +279,6 @@ guint32 EventDND::get_time() const
   return gdk_event_get_time(Event::gobj());
 }
 
-void EventDND::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 Glib::RefPtr<Gdk::Drop> EventDND::get_drop()
 {
   return Glib::wrap(gdk_event_get_drop(Event::gobj()), true);
@@ -376,11 +346,6 @@ void EventTouchpadSwipe::get_touchpad_deltas(double& dx, double& dy) const
   gdk_event_get_touchpad_deltas(Event::gobj(), &dx, &dy);
 }
 
-void EventTouchpadSwipe::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 // *** EventTouchpadPinch ***
 
 guint32 EventTouchpadPinch::get_time() const
@@ -431,11 +396,6 @@ double EventTouchpadPinch::get_touchpad_scale() const
   return scale;
 }
 
-void EventTouchpadPinch::get_root_coords(double& x_root, double& y_root) const
-{
-  gdk_event_get_root_coords(Event::gobj(), &x_root, &y_root);
-}
-
 // *** EventPadButton ***
 
 guint32 EventPadButton::get_time() const
diff --git a/gdk/src/events.hg b/gdk/src/events.hg
index 1649abe7..be39605c 100644
--- a/gdk/src/events.hg
+++ b/gdk/src/events.hg
@@ -134,9 +134,6 @@ public:
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_coords, voidreturn)
   void get_coords(double& x_win, double& y_win) const;
 
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
-
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_axis)
   bool get_axis(Gdk::AxisUse axis_use, double& value) const;
 
@@ -194,9 +191,6 @@ public:
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_coords, voidreturn)
   void get_coords(double& x_win, double& y_win) const;
 
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
-
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_scroll_deltas)
   bool get_scroll_deltas(double& delta_x, double& delta_y) const;
 
@@ -236,9 +230,6 @@ public:
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_coords, voidreturn)
   void get_coords(double& x_win, double& y_win) const;
 
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
-
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_axis)
   bool get_axis(Gdk::AxisUse axis_use, double& value) const;
 
@@ -283,9 +274,6 @@ public:
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_coords, voidreturn)
   void get_coords(double& x_win, double& y_win) const;
 
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
-
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_axis)
   bool get_axis(Gdk::AxisUse axis_use, double& value) const;
 
@@ -333,9 +321,6 @@ public:
   _WRAP_METHOD_DOCS_ONLY(gdk_event_get_coords, voidreturn)
   void get_coords(double& x_win, double& y_win) const;
 
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
-
   /*** Returns the crossing mode.
    * Gdk::CrossingMode::GTK_GRAB, Gdk::CrossingMode::GTK_UNGRAB, and
    * Gdk::CrossingMode::STATE_CHANGED are always synthesized, never native.
@@ -422,15 +407,6 @@ public:
    */
   guint32 get_time() const;
 
-  /** Extract the root surface relative x/y coordinates from an event.
-   * Only meaningful if get_event_type() returns Gdk::Event::Type::DRAG_MOTION
-   * or Gdk::Event::Type::DROP_START.
-   *
-   * @param[out] x_root Location to put root surface x coordinate.
-   * @param[out] y_root Location to put root surface y coordinate.
-   */
-  void get_root_coords(double& x_root, double& y_root) const;
-
   /**
    * Returns the Gdk::Drop.
    */
@@ -554,9 +530,6 @@ public:
    */
   void get_touchpad_deltas(double& dx, double& dy) const;
   _IGNORE(gdk_event_get_touchpad_deltas)
-
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
 };
 
 /** Generated during touchpad swipe gestures.
@@ -614,9 +587,6 @@ public:
    */
   double get_touchpad_scale() const;
   _IGNORE(gdk_event_get_touchpad_scale)
-
-  _WRAP_METHOD_DOCS_ONLY(gdk_event_get_root_coords, voidreturn)
-  void get_root_coords(double& x_root, double& y_root) const;
 };
 
 /** Generated during Gdk::InputSource::TABLET_PAD button presses and releases.
diff --git a/gdk/src/surface.hg b/gdk/src/surface.hg
index da67bd2c..22087cae 100644
--- a/gdk/src/surface.hg
+++ b/gdk/src/surface.hg
@@ -75,24 +75,23 @@ public:
   // function, because some of them have identical prototypes.
   _WRAP_METHOD(static Glib::RefPtr<Surface> create_toplevel(const Glib::RefPtr<Display>& display,
     int width, int height), gdk_surface_new_toplevel)
+  _WRAP_METHOD(static Glib::RefPtr<Surface> create_temp(const Glib::RefPtr<Display>& display,
+    const Rectangle& position), gdk_surface_new_temp)
   _WRAP_METHOD(static Glib::RefPtr<Surface> create_popup(const Glib::RefPtr<Display>& display,
-    const Rectangle& position), gdk_surface_new_popup)
-  //TODO: Wrap or ignore? The documentation says: You most likely do not want to use this function.
-  //_WRAP_METHOD(static Glib::RefPtr<Surface> create_temp(const Glib::RefPtr<Display>& display), 
gdk_surface_new_temp)
-  _WRAP_METHOD(static Glib::RefPtr<Surface> create_child(const Glib::RefPtr<Surface>& parent,
-    const Rectangle& position), gdk_surface_new_child)
+    const Glib::RefPtr<Surface>& parent, bool autohide), gdk_surface_new_popup)
 
   _WRAP_METHOD(Type get_surface_type() const, gdk_surface_get_surface_type)
 
+  _WRAP_METHOD(Glib::RefPtr<Surface> get_parent(), gdk_surface_get_parent, refreturn)
+  _WRAP_METHOD(Glib::RefPtr<const Surface> get_parent() const, gdk_surface_get_parent, refreturn, 
constversion)
+
   _WRAP_METHOD(Glib::RefPtr<Display> get_display(), gdk_surface_get_display, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Display> get_display() const, gdk_surface_get_display, refreturn, 
constversion)
 
   _WRAP_METHOD(void show(), gdk_surface_show)
   _WRAP_METHOD(void hide(), gdk_surface_hide)
   _WRAP_METHOD(void show_unraised(), gdk_surface_show_unraised)
-  _WRAP_METHOD(void move(int x, int y), gdk_surface_move)
   _WRAP_METHOD(void resize(int width, int height), gdk_surface_resize)
-  _WRAP_METHOD(void move_resize(int x, int y, int width, int height), gdk_surface_move_resize)
   _WRAP_METHOD(void move_to_rect(const Rectangle& rect, Gravity rect_anchor,
     Gravity surface_anchor, AnchorHints anchor_hints, int rect_anchor_dx, int rect_anchor_dy),
     gdk_surface_move_to_rect)
@@ -118,17 +117,10 @@ public:
   _WRAP_METHOD(void focus(guint32 timestamp), gdk_surface_focus)
 
   _WRAP_METHOD(void input_shape_combine_region(const ::Cairo::RefPtr< ::Cairo::Region>& shape_region, int 
offset_x, int offset_y), gdk_surface_input_shape_combine_region)
-  _WRAP_METHOD(void set_child_input_shapes(), gdk_surface_set_child_input_shapes)
-  _WRAP_METHOD(void merge_child_input_shapes(), gdk_surface_merge_child_input_shapes)
-
-  _WRAP_METHOD(void set_pass_through(bool pass_through = true), gdk_surface_set_pass_through)
-  _WRAP_METHOD(bool get_pass_through() const, gdk_surface_get_pass_through)
 
   _WRAP_METHOD(bool is_visible() const, gdk_surface_is_visible)
   _WRAP_METHOD(bool is_viewable() const, gdk_surface_is_viewable)
-  _WRAP_METHOD(bool is_input_only() const, gdk_surface_is_input_only)
   _WRAP_METHOD(State get_state() const, gdk_surface_get_state)
-  _WRAP_METHOD(bool has_native() const, gdk_surface_has_native)
   _WRAP_METHOD(void set_type_hint(TypeHint hint), gdk_surface_set_type_hint)
   _WRAP_METHOD(TypeHint get_type_hint(), gdk_surface_get_type_hint)
   _WRAP_METHOD(bool get_modal_hint() const, gdk_surface_get_modal_hint)
@@ -150,37 +142,17 @@ public:
   _WRAP_METHOD(Glib::RefPtr<Cursor> get_device_cursor(const Glib::RefPtr<Device>& device), 
gdk_surface_get_device_cursor, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Cursor> get_device_cursor(const Glib::RefPtr<const Device>& device) const, 
gdk_surface_get_device_cursor, refreturn)
 
-
   _WRAP_METHOD(Glib::RefPtr<Cursor> get_cursor(), gdk_surface_get_cursor, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Cursor> get_cursor() const, gdk_surface_get_cursor, refreturn, 
constversion)
 
-  _WRAP_METHOD(void get_geometry(int& x, int& y, int& width, int& height) const, gdk_surface_get_geometry)
   _WRAP_METHOD(int get_width() const, gdk_surface_get_width)
   _WRAP_METHOD(int get_height() const, gdk_surface_get_height)
 
   _WRAP_METHOD(void get_position(int& x, int& y) const, gdk_surface_get_position)
-  _WRAP_METHOD(int get_origin(int& x, int& y) const, gdk_surface_get_origin)
-  _WRAP_METHOD(void get_root_coords(int x, int y, int& root_x, int& root_y), gdk_surface_get_root_coords)
-  _WRAP_METHOD(void coords_to_parent(double x,  double y, double& parent_x, double& parent_y), 
gdk_surface_coords_to_parent)
-  _WRAP_METHOD(void coords_from_parent(double parent_x, double parent_y, double& x, double& y), 
gdk_surface_coords_from_parent)
-
-  _WRAP_METHOD(void get_root_origin(int& x, int& y) const, gdk_surface_get_root_origin)
-
-  _WRAP_METHOD(void get_frame_extents(Rectangle& rect) const, gdk_surface_get_frame_extents)
 
   _WRAP_METHOD(int get_scale_factor() const, gdk_surface_get_scale_factor)
-  _WRAP_METHOD(Glib::RefPtr<Surface> get_parent(), gdk_surface_get_parent, refreturn)
-  _WRAP_METHOD(Glib::RefPtr<const Surface> get_parent() const, gdk_surface_get_parent, refreturn, 
constversion)
-  _WRAP_METHOD(Glib::RefPtr<Surface> get_toplevel(), gdk_surface_get_toplevel, refreturn)
-  _WRAP_METHOD(Glib::RefPtr<const Surface> get_toplevel() const, gdk_surface_get_toplevel, refreturn, 
constversion)
-
-  _WRAP_METHOD(Glib::RefPtr<Surface> get_device_position(const Glib::RefPtr<const Device>& device, double& 
x, double& y, ModifierType& mask) const, gdk_surface_get_device_position, refreturn)
 
-#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<Surface> >',`Glib::ListHandler<Glib::RefPtr<Surface> 
::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(std::vector< Glib::RefPtr<Surface> > get_children(), gdk_surface_get_children)
-#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr<const Surface> >',`Glib::ListHandler<Glib::RefPtr<const 
Surface> >::list_to_vector($3, Glib::OWNERSHIP_SHALLOW)')
-  _WRAP_METHOD(std::vector< Glib::RefPtr<const Surface> > get_children() const, gdk_surface_get_children)
-  _IGNORE(gdk_surface_peek_children) //gdk_surface_peek_children() is the same as gdk_surface_get_children() 
with different memory mangement of the list.
+  _WRAP_METHOD(void get_device_position(const Glib::RefPtr<const Device>& device, double& x, double& y, 
ModifierType& mask) const, gdk_surface_get_device_position)
 
 #m4 _CONVERSION(`const 
std::vector<Glib::RefPtr<Texture>>&',`GList*',`Glib::ListHandler<Glib::RefPtr<Texture>>::vector_to_list($3).data()')
   _WRAP_METHOD(void set_icon_list(const std::vector<Glib::RefPtr<Texture>>& textures), 
gdk_surface_set_icon_list)
@@ -283,9 +255,12 @@ public:
 
   _WRAP_PROPERTY("cursor", Glib::RefPtr<Cursor>)
   _WRAP_PROPERTY("display", Glib::RefPtr<Display>)
+  _WRAP_PROPERTY("parent", Glib::RefPtr<Surface>)
   _WRAP_PROPERTY("frame-clock", Glib::RefPtr<FrameClock>)
   _WRAP_PROPERTY("state", State)
   _WRAP_PROPERTY("mapped", bool)
+  _WRAP_PROPERTY("autohide", bool)
+  _WRAP_PROPERTY("surface-type", Type)
 };
 
 } // namespace Gdk
diff --git a/gtk/gtkmm.h b/gtk/gtkmm.h
index ea048ffa..3df17fa6 100644
--- a/gtk/gtkmm.h
+++ b/gtk/gtkmm.h
@@ -161,9 +161,9 @@ extern const int gtkmm_micro_version;
 #include <gtkmm/fontchooserwidget.h>
 #include <gtkmm/frame.h>
 #include <gtkmm/gesture.h>
+#include <gtkmm/gestureclick.h>
 #include <gtkmm/gesturedrag.h>
 #include <gtkmm/gesturelongpress.h>
-#include <gtkmm/gesturemultipress.h>
 #include <gtkmm/gesturepan.h>
 #include <gtkmm/gesturerotate.h>
 #include <gtkmm/gesturesingle.h>
diff --git a/gtk/src/aboutdialog.hg b/gtk/src/aboutdialog.hg
index b072fcb6..46ac9103 100644
--- a/gtk/src/aboutdialog.hg
+++ b/gtk/src/aboutdialog.hg
@@ -151,7 +151,8 @@ public:
   _WRAP_PROPERTY("logo_icon_name", Glib::ustring)
   _WRAP_PROPERTY("wrap_license", bool)
 
-  _WRAP_SIGNAL(bool activate_link(const std::string& uri), "activate-link")
+  // no_default_handler because GtkAboutDialogClass is private.
+  _WRAP_SIGNAL(bool activate_link(const std::string& uri), "activate-link", no_default_handler)
 };
 
 } // namespace Gtk
diff --git a/gtk/src/appchooserbutton.hg b/gtk/src/appchooserbutton.hg
index 18253d48..7bce7802 100644
--- a/gtk/src/appchooserbutton.hg
+++ b/gtk/src/appchooserbutton.hg
@@ -79,8 +79,9 @@ public:
   _WRAP_METHOD(void set_show_default_item(bool setting = true), gtk_app_chooser_button_set_show_default_item)
   _WRAP_METHOD(bool get_show_default_item() const, gtk_app_chooser_button_get_show_default_item)
 
-
-  _WRAP_SIGNAL(void custom_item_activated(const Glib::ustring& item_name), "custom-item-activated", 
detail_name custom_item_name)
+  // no_default_handler because GtkAppChooserButtonClass is private.
+  _WRAP_SIGNAL(void custom_item_activated(const Glib::ustring& item_name), "custom-item-activated",
+    detail_name custom_item_name, no_default_handler)
 
   _WRAP_PROPERTY("show-dialog-item", bool)
   _WRAP_PROPERTY("heading", Glib::ustring)
diff --git a/gtk/src/appchooserwidget.hg b/gtk/src/appchooserwidget.hg
index 8aa3b6e8..8bcd1b64 100644
--- a/gtk/src/appchooserwidget.hg
+++ b/gtk/src/appchooserwidget.hg
@@ -76,11 +76,11 @@ public:
   _WRAP_METHOD(void set_default_text(const Glib::ustring& text), gtk_app_chooser_widget_set_default_text)
   _WRAP_METHOD(Glib::ustring get_default_text(), gtk_app_chooser_widget_get_default_text)
 
-
+  // no_default_handler because GtkAppChooserWidgetClass is private.
 #m4 _CONVERSION(`GAppInfo*',`const Glib::RefPtr<Gio::AppInfo>&',`Glib::wrap($3, true)')
-  _WRAP_SIGNAL(void application_selected(const Glib::RefPtr<Gio::AppInfo>& app_info), "application-selected")
-  _WRAP_SIGNAL(void application_activated(const Glib::RefPtr<Gio::AppInfo>& app_info), 
"application-activated")
-  _WRAP_SIGNAL(void populate_popup(Menu* menu, const Glib::RefPtr<Gio::AppInfo>& app_info), "populate-popup")
+  _WRAP_SIGNAL(void application_selected(const Glib::RefPtr<Gio::AppInfo>& app_info), 
"application-selected", no_default_handler)
+  _WRAP_SIGNAL(void application_activated(const Glib::RefPtr<Gio::AppInfo>& app_info), 
"application-activated", no_default_handler)
+  _WRAP_SIGNAL(void populate_popup(Menu* menu, const Glib::RefPtr<Gio::AppInfo>& app_info), 
"populate-popup", no_default_handler)
 
   _WRAP_PROPERTY("show-default", bool)
   _WRAP_PROPERTY("show-recommended", bool)
@@ -90,5 +90,4 @@ public:
   _WRAP_PROPERTY("default-text", Glib::ustring)
 };
 
-
 } // namespace Gtk
diff --git a/gtk/src/assistant.hg b/gtk/src/assistant.hg
index 50a531d3..34560d1a 100644
--- a/gtk/src/assistant.hg
+++ b/gtk/src/assistant.hg
@@ -92,10 +92,11 @@ public:
   _WRAP_METHOD(Glib::RefPtr<Gio::ListModel> get_pages(), gtk_assistant_get_pages)
   _WRAP_METHOD(Glib::RefPtr<const Gio::ListModel> get_pages() const, gtk_assistant_get_pages, constversion)
 
-  _WRAP_SIGNAL(void prepare(Gtk::Widget* page), "prepare")
-  _WRAP_SIGNAL(void apply(), "apply")
-  _WRAP_SIGNAL(void close(), "close")
-  _WRAP_SIGNAL(void cancel(), "cancel")
+  // no_default_handler because GtkAssistantClass is private.
+  _WRAP_SIGNAL(void prepare(Gtk::Widget* page), "prepare", no_default_handler)
+  _WRAP_SIGNAL(void apply(), "apply", no_default_handler)
+  _WRAP_SIGNAL(void close(), "close", no_default_handler)
+  _WRAP_SIGNAL(void cancel(), "cancel", no_default_handler)
 
   //Ignore action signals.
   _IGNORE_SIGNAL("escape")
diff --git a/gtk/src/calendar.hg b/gtk/src/calendar.hg
index 76774bc1..6b8a427e 100644
--- a/gtk/src/calendar.hg
+++ b/gtk/src/calendar.hg
@@ -118,13 +118,14 @@ public:
 
   _WRAP_METHOD(bool get_day_is_marked(guint day) const, gtk_calendar_get_day_is_marked)
 
-  _WRAP_SIGNAL(void month_changed(), "month_changed")
-  _WRAP_SIGNAL(void day_selected(), "day_selected")
-  _WRAP_SIGNAL(void day_selected_double_click(), "day_selected_double_click")
-  _WRAP_SIGNAL(void prev_month(), "prev_month")
-  _WRAP_SIGNAL(void next_month(), "next_month")
-  _WRAP_SIGNAL(void prev_year(), "prev_year")
-  _WRAP_SIGNAL(void next_year(), "next_year")
+  // no_default_handler because GtkCalendarClass is private.
+  _WRAP_SIGNAL(void month_changed(), "month_changed", no_default_handler)
+  _WRAP_SIGNAL(void day_selected(), "day_selected", no_default_handler)
+  _WRAP_SIGNAL(void day_selected_double_click(), "day_selected_double_click", no_default_handler)
+  _WRAP_SIGNAL(void prev_month(), "prev_month", no_default_handler)
+  _WRAP_SIGNAL(void next_month(), "next_month", no_default_handler)
+  _WRAP_SIGNAL(void prev_year(), "prev_year", no_default_handler)
+  _WRAP_SIGNAL(void next_year(), "next_year", no_default_handler)
 
   _WRAP_PROPERTY("year", int)
   _WRAP_PROPERTY("month", int)
diff --git a/gtk/src/cellrendereraccel.hg b/gtk/src/cellrendereraccel.hg
index 1b450f36..b1f4e030 100644
--- a/gtk/src/cellrendereraccel.hg
+++ b/gtk/src/cellrendereraccel.hg
@@ -49,8 +49,11 @@ public:
 #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
 
   //TODO: Wrap accel_key and accel_mods in an AccelKey?
-  _WRAP_SIGNAL(void accel_edited(const Glib::ustring& path_string, guint accel_key, Gdk::ModifierType 
accel_mods, guint hardware_keycode), "accel_edited")
-  _WRAP_SIGNAL(void accel_cleared(const Glib::ustring& path_string), "accel_cleared")
+  // no_default_handler because GtkCellRendererAccelClass is private.
+  _WRAP_SIGNAL(void accel_edited(const Glib::ustring& path_string, guint accel_key, Gdk::ModifierType 
accel_mods, guint hardware_keycode),
+    "accel_edited", no_default_handler)
+  _WRAP_SIGNAL(void accel_cleared(const Glib::ustring& path_string),
+    "accel_cleared", no_default_handler)
 
   _WRAP_PROPERTY("accel-key", guint)
   _WRAP_PROPERTY("accel-mods", Gdk::ModifierType)
diff --git a/gtk/src/cellrenderertoggle.hg b/gtk/src/cellrenderertoggle.hg
index 2395808b..7d77dde3 100644
--- a/gtk/src/cellrenderertoggle.hg
+++ b/gtk/src/cellrenderertoggle.hg
@@ -37,7 +37,6 @@ public:
 
   _CTOR_DEFAULT
 
-
   _WRAP_METHOD(bool get_radio() const, gtk_cell_renderer_toggle_get_radio)
   _WRAP_METHOD(void set_radio(bool radio = true), gtk_cell_renderer_toggle_set_radio)
   _WRAP_METHOD(bool get_active() const, gtk_cell_renderer_toggle_get_active)
@@ -45,10 +44,10 @@ public:
   _WRAP_METHOD(bool get_activatable() const, gtk_cell_renderer_toggle_get_activatable)
   _WRAP_METHOD(void set_activatable(bool setting = true), gtk_cell_renderer_toggle_set_activatable)
 
-
 #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
-   //TODO: Maybe the parameter should be a TreePath.
-  _WRAP_SIGNAL(void toggled(const Glib::ustring& path), "toggled")
+  //TODO: Maybe the parameter should be a TreePath.
+  // no_default_handler because GtkCellRendererToggleClass is private.
+  _WRAP_SIGNAL(void toggled(const Glib::ustring& path), "toggled", no_default_handler)
 
   _WRAP_PROPERTY("activatable", bool)
   _WRAP_PROPERTY("active", bool)
diff --git a/gtk/src/colorbutton.hg b/gtk/src/colorbutton.hg
index 33c09395..39596ff3 100644
--- a/gtk/src/colorbutton.hg
+++ b/gtk/src/colorbutton.hg
@@ -76,8 +76,8 @@ public:
   _WRAP_PROPERTY("rgba", Gdk::RGBA)
   _WRAP_PROPERTY("show-editor", bool)
 
-  _WRAP_SIGNAL(void color_set(), "color-set")
+  // no_default_handler because GtkColorButtonClass is private.
+  _WRAP_SIGNAL(void color_set(), "color-set", no_default_handler)
 };
 
-
 } // namespace Gtk
diff --git a/gtk/src/entrycompletion.ccg b/gtk/src/entrycompletion.ccg
index 6a18ea8e..11260501 100644
--- a/gtk/src/entrycompletion.ccg
+++ b/gtk/src/entrycompletion.ccg
@@ -218,7 +218,6 @@ static gboolean Widget_signal_cursor_on_match_notify_callback(GtkEntryCompletion
   return RType();
 }
 
-
 const Glib::SignalProxyInfo EntryCompletion_signal_cursor_on_match_info =
 {
   "cursor_on_match",
@@ -228,67 +227,11 @@ const Glib::SignalProxyInfo EntryCompletion_signal_cursor_on_match_info =
 
 } //anonymous namespace
 
-
 namespace Gtk
 {
 
 //Hand-coded signal wrapping:
 
-bool Gtk::EntryCompletion::on_match_selected(const TreeModel::iterator& iter)
-{
-  const auto base = static_cast<BaseClassType*>(
-      g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class 
(The original underlying C class).
-  );
-
-  if(base && base->match_selected)
-    return (*base->match_selected)(gobj(), const_cast<GtkTreeModel*>(iter.get_model_gobject()), 
const_cast<GtkTreeIter*>(iter.gobj()));
-  else
-  {
-    typedef bool RType;
-    return RType(); //There should always be an implementation in the C object, so this will never happen.
-  }
-}
-
-gboolean EntryCompletion_Class::match_selected_callback_custom(GtkEntryCompletion* self, GtkTreeModel* 
c_model, GtkTreeIter* c_iter)
-{
-  const auto obj = dynamic_cast<CppObjectType*>(
-      Glib::ObjectBase::_get_current_wrapper((GObject*)self));
-
-  // Non-gtkmmproc-generated custom classes implicitly call the default
-  // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
-  // generated classes can use this optimisation, which avoids the unnecessary
-  // parameter conversions if there is no possibility of the virtual function
-  // being overridden:
-  if(obj && obj->is_derived_())
-  {
-    try // Trap C++ exceptions which would normally be lost because this is a C callback.
-    {
-      // Call the virtual member method, which derived classes might override.
-
-      //This conversion is the custom-written part:
-      Gtk::TreeModel::iterator cppIter(c_model, c_iter);
-      return obj->on_match_selected(cppIter);
-    }
-    catch(...)
-    {
-      Glib::exception_handlers_invoke();
-    }
-  }
-  else
-  {
-    const auto base = static_cast<BaseClassType*>(
-        g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The 
original underlying C class).
-    );
-
-    // Call the original underlying C function:
-    if(base && base->match_selected)
-      return (*base->match_selected)(self, c_model, c_iter);
-  }
-
-  typedef gboolean RType;
-  return RType();
-}
-
 Glib::SignalProxy<bool(const TreeModel::iterator&)> EntryCompletion::signal_match_selected()
 {
   return Glib::SignalProxy<bool(const TreeModel::iterator&)>(this, 
&EntryCompletion_signal_match_selected_info);
diff --git a/gtk/src/entrycompletion.hg b/gtk/src/entrycompletion.hg
index 3cb9d94e..519c0514 100644
--- a/gtk/src/entrycompletion.hg
+++ b/gtk/src/entrycompletion.hg
@@ -133,7 +133,8 @@ public:
   _WRAP_METHOD(void set_text_column(int column), gtk_entry_completion_set_text_column)
   _WRAP_METHOD(int get_text_column() const, gtk_entry_completion_get_text_column)
 
-  _WRAP_SIGNAL(void action_activated(int index), action_activated)
+  // no_default_handler because GtkEntryCompletionClass is private.
+  _WRAP_SIGNAL(void action_activated(int index), action_activated, no_default_handler)
 
   //We completely hand-code these signals because we want to change how the parameters are wrapped,
   //because we need both the iter and the model to make the C++ iter.
@@ -179,24 +180,9 @@ public:
    */
   Glib::SignalProxy<bool(const TreeModel::iterator&)> signal_cursor_on_match();
 
-
-  #m4begin
-dnl// Hook in custom callback.
-dnl// It will use the callback.
-dnl
-  _PUSH(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
-    klass->match_selected = &match_selected_callback_custom;
-  _SECTION(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
-    static gboolean match_selected_callback_custom(GtkEntryCompletion* self, GtkTreeModel* c_model, 
GtkTreeIter* c_iter);
-  _POP()
-#m4end
-
 #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
-
-  _WRAP_SIGNAL(bool insert_prefix(const Glib::ustring& prefix), insert_prefix)
-
-  _WRAP_SIGNAL(void no_matches(), no_matches)
-
+  _WRAP_SIGNAL(bool insert_prefix(const Glib::ustring& prefix), insert_prefix, no_default_handler)
+  _WRAP_SIGNAL(void no_matches(), no_matches, no_default_handler)
 
   _WRAP_PROPERTY("model", Glib::RefPtr<Gtk::TreeModel>)
   _WRAP_PROPERTY("minimum_key_length", int)
@@ -207,12 +193,6 @@ dnl
   _WRAP_PROPERTY("popup_single_match", bool)
   _WRAP_PROPERTY("inline-selection", bool)
   _WRAP_PROPERTY("cell-area", Glib::RefPtr<CellArea>)
-
-protected:
-
-  //Default Signal Handler:
-  virtual bool on_match_selected(const TreeModel::iterator& iter);
-  //No default handler for on_cursor_on_match(), to preserve ABI. TODO: Add this when we can break ABI.
 };
 
 } // namespace Gtk
diff --git a/gtk/src/enums.hg b/gtk/src/enums.hg
index 1909978c..eb7d463b 100644
--- a/gtk/src/enums.hg
+++ b/gtk/src/enums.hg
@@ -52,7 +52,6 @@ _WRAP_ENUM(SelectionMode, GtkSelectionMode)
 _WRAP_ENUM(ShadowType, GtkShadowType)
 _WRAP_ENUM(StackTransitionType, GtkStackTransitionType)
 _WRAP_ENUM(ToolbarStyle, GtkToolbarStyle)
-_WRAP_ENUM(WindowPosition,GtkWindowPosition)
 _WRAP_ENUM(WindowType,GtkWindowType)
 _WRAP_ENUM(WrapMode, GtkWrapMode)
 _WRAP_ENUM(SortType, GtkSortType)
diff --git a/gtk/src/filechooserbutton.hg b/gtk/src/filechooserbutton.hg
index d5b6820b..84780823 100644
--- a/gtk/src/filechooserbutton.hg
+++ b/gtk/src/filechooserbutton.hg
@@ -74,9 +74,10 @@ public:
   _WRAP_METHOD(int get_width_chars() const, gtk_file_chooser_button_get_width_chars)
   _WRAP_METHOD(void set_width_chars(int n_chars), gtk_file_chooser_button_set_width_chars)
 
+  // no_default_handler because GtkFileChooserButtonClass is private.
   //This is a G_SIGNAL_ACTION signal, but it seems to be public API for applications.
   //See http://bugzilla.gnome.org/show_bug.cgi?id=353196
-  _WRAP_SIGNAL(void file_set(), "file-set")
+  _WRAP_SIGNAL(void file_set(), "file-set", no_default_handler)
 
   //_WRAP_PROPERTY("dialog", FileChooserDialog*) //construct-only
   _IGNORE_PROPERTY("dialog")
@@ -85,5 +86,4 @@ public:
   _WRAP_PROPERTY("width-chars", int)
 };
 
-
 } // namespace Gtk
diff --git a/gtk/src/filelist.am b/gtk/src/filelist.am
index 62a9672f..c81cd140 100644
--- a/gtk/src/filelist.am
+++ b/gtk/src/filelist.am
@@ -89,9 +89,9 @@ gtkmm_files_any_hg =          \
        fontchooserwidget.hg    \
        frame.hg                \
        gesture.hg      \
+       gestureclick.hg \
        gesturedrag.hg  \
        gesturelongpress.hg     \
-       gesturemultipress.hg    \
        gesturepan.hg   \
        gesturerotate.hg        \
        gesturesingle.hg        \
@@ -129,6 +129,7 @@ gtkmm_files_any_hg =                \
        menutoolbutton.hg       \
        messagedialog.hg        \
        modelbutton.hg \
+       native.hg \
        nativedialog.hg \
        notebook.hg             \
        notebookpage.hg \
diff --git a/gtk/src/flowbox.hg b/gtk/src/flowbox.hg
index 3ffb2ca7..497dd48d 100644
--- a/gtk/src/flowbox.hg
+++ b/gtk/src/flowbox.hg
@@ -302,9 +302,9 @@ public:
   _WRAP_PROPERTY("row-spacing", guint)
   _WRAP_PROPERTY("column-spacing", guint)
 
-
-  _WRAP_SIGNAL(void child_activated(FlowBoxChild* child), "child-activated")
-  _WRAP_SIGNAL(void selected_children_changed(), "selected-children-changed")
+  // no_default_handler because GtkFlowBoxClass is private.
+  _WRAP_SIGNAL(void child_activated(FlowBoxChild* child), "child-activated", no_default_handler)
+  _WRAP_SIGNAL(void selected_children_changed(), "selected-children-changed", no_default_handler)
   _IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor, select-all, unselect-all) // 
Action signals
 
 private:
diff --git a/gtk/src/fontbutton.hg b/gtk/src/fontbutton.hg
index bebac2b5..b03d7f9a 100644
--- a/gtk/src/fontbutton.hg
+++ b/gtk/src/fontbutton.hg
@@ -58,7 +58,8 @@ public:
   _WRAP_PROPERTY("use-font", bool)
   _WRAP_PROPERTY("use-size", bool)
 
-  _WRAP_SIGNAL(void font_set(), "font-set")
+  // no_default_handler because GtkFontButtonClass is private.
+  _WRAP_SIGNAL(void font_set(), "font-set", no_default_handler)
 };
 
 } // namespace Gtk
diff --git a/gtk/src/gesturemultipress.ccg b/gtk/src/gestureclick.ccg
similarity index 89%
rename from gtk/src/gesturemultipress.ccg
rename to gtk/src/gestureclick.ccg
index f78df342..62fe724e 100644
--- a/gtk/src/gesturemultipress.ccg
+++ b/gtk/src/gestureclick.ccg
@@ -19,9 +19,9 @@
 namespace Gtk
 {
 
-void GestureMultiPress::unset_area()
+void GestureClick::unset_area()
 {
-  gtk_gesture_multi_press_set_area(gobj(), nullptr);
+  gtk_gesture_click_set_area(gobj(), nullptr);
 }
 
 } //namespace Gtk
diff --git a/gtk/src/gesturemultipress.hg b/gtk/src/gestureclick.hg
similarity index 87%
rename from gtk/src/gesturemultipress.hg
rename to gtk/src/gestureclick.hg
index 54aab81b..e168c3f2 100644
--- a/gtk/src/gesturemultipress.hg
+++ b/gtk/src/gestureclick.hg
@@ -39,9 +39,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureMultiPress : public GestureSingle
+class GestureClick : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureMultiPress, GtkGestureMultiPress, GTK_GESTURE_MULTI_PRESS, GestureSingle, 
GtkGestureSingle)
+  _CLASS_GOBJECT(GestureClick, GtkGestureClick, GTK_GESTURE_CLICK, GestureSingle, GtkGestureSingle)
 
 protected:
   /** Constructs a Gesture that recognizes single and multiple presses.
@@ -53,12 +53,12 @@ public:
    *
    * @newin{3,14}
    *
-   * @return A RefPtr to a new GestureMultiPress.
+   * @return A RefPtr to a new GestureClick.
    */
   _WRAP_CREATE()
 
-  _WRAP_METHOD(bool get_area(Gdk::Rectangle& rect) const, gtk_gesture_multi_press_get_area)
-  _WRAP_METHOD(void set_area(const Gdk::Rectangle& rect), gtk_gesture_multi_press_set_area)
+  _WRAP_METHOD(bool get_area(Gdk::Rectangle& rect) const, gtk_gesture_click_get_area)
+  _WRAP_METHOD(void set_area(const Gdk::Rectangle& rect), gtk_gesture_click_set_area)
 
   /** Resets the press area to an unrestricted state.
    *
@@ -66,7 +66,7 @@ public:
    */
   void unset_area();
 
-  // no_default_handler because GtkGestureMultiPressClass is private.
+  // no_default_handler because GtkGestureClickClass is private.
   _WRAP_SIGNAL(void pressed(int n_press, double x, double y), "pressed", no_default_handler)
   _WRAP_SIGNAL(void released(int n_press, double x, double y), "released", no_default_handler)
   _WRAP_SIGNAL(void stopped(), "stopped", no_default_handler)
diff --git a/gtk/src/icontheme.hg b/gtk/src/icontheme.hg
index 003c212f..420cd465 100644
--- a/gtk/src/icontheme.hg
+++ b/gtk/src/icontheme.hg
@@ -123,7 +123,8 @@ public:
   _WRAP_METHOD(Glib::ustring get_example_icon_name() const, gtk_icon_theme_get_example_icon_name)
   _WRAP_METHOD(bool rescan_if_needed(), gtk_icon_theme_rescan_if_needed)
 
-  _WRAP_SIGNAL(void changed(), "changed")
+  // no_default_handler because GtkIconThemeClass is private.
+  _WRAP_SIGNAL(void changed(), "changed", no_default_handler)
 };
 
 } // namespace Gtk
diff --git a/gtk/src/iconview.hg b/gtk/src/iconview.hg
index 7aad920e..ec662127 100644
--- a/gtk/src/iconview.hg
+++ b/gtk/src/iconview.hg
@@ -392,8 +392,9 @@ public:
   _WRAP_METHOD(void set_tooltip_column(int column), gtk_icon_view_set_tooltip_column)
   _WRAP_METHOD(int get_tooltip_column() const, gtk_icon_view_get_tooltip_column)
 
-  _WRAP_SIGNAL(void item_activated(const TreeModel::Path& path), item_activated)
-  _WRAP_SIGNAL(void selection_changed(), selection_changed)
+  // no_default_handler because GtkIconViewClass is private.
+  _WRAP_SIGNAL(void item_activated(const TreeModel::Path& path), item_activated, no_default_handler)
+  _WRAP_SIGNAL(void selection_changed(), selection_changed, no_default_handler)
 
   /* Key binding signals */
   _IGNORE_SIGNAL(select_all)
diff --git a/gtk/src/infobar.hg b/gtk/src/infobar.hg
index a54eebcc..6f12e594 100644
--- a/gtk/src/infobar.hg
+++ b/gtk/src/infobar.hg
@@ -85,7 +85,8 @@ public:
 
   _IGNORE_SIGNAL("close")
 
-  _WRAP_SIGNAL(void response(int response_id), "response")
+  // no_default_handler because GtkInfoBarClass is private.
+  _WRAP_SIGNAL(void response(int response_id), "response", no_default_handler)
 
   _WRAP_PROPERTY("message-type", MessageType)
   _WRAP_PROPERTY("show-close-button", bool)
diff --git a/gtk/src/label.hg b/gtk/src/label.hg
index 8ba43600..6520d79c 100644
--- a/gtk/src/label.hg
+++ b/gtk/src/label.hg
@@ -132,7 +132,8 @@ public:
   _WRAP_METHOD(void set_yalign (float yalign), gtk_label_set_yalign)
   _WRAP_METHOD(float get_yalign() const, gtk_label_get_yalign)
 
-  _WRAP_SIGNAL(void populate_popup(Menu* menu), "populate_popup")
+  // no_default_handler because GtkLabelClass is private.
+  _WRAP_SIGNAL(void populate_popup(Menu* menu), "populate_popup", no_default_handler)
 
   #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
   _WRAP_SIGNAL(bool activate_link(const Glib::ustring& uri), "activate-link", no_default_handler)
diff --git a/gtk/src/levelbar.hg b/gtk/src/levelbar.hg
index 9c14b447..4f3ae663 100644
--- a/gtk/src/levelbar.hg
+++ b/gtk/src/levelbar.hg
@@ -84,7 +84,9 @@ public:
   _WRAP_METHOD(void remove_offset_value(const Glib::ustring& name), gtk_level_bar_remove_offset_value)
   _WRAP_METHOD(bool get_offset_value(const Glib::ustring& name, double& value) const, 
gtk_level_bar_get_offset_value)
 
-  _WRAP_SIGNAL(void offset_changed(const Glib::ustring& name), offset_changed, detail_name offset_name)
+  // no_default_handler because GtkLevelBarClass is private.
+  _WRAP_SIGNAL(void offset_changed(const Glib::ustring& name), offset_changed,
+    detail_name offset_name, no_default_handler)
 
   _WRAP_PROPERTY("value", double)
   _WRAP_PROPERTY("min-value", double)
diff --git a/gtk/src/listbox.hg b/gtk/src/listbox.hg
index f3724cb4..89d71339 100644
--- a/gtk/src/listbox.hg
+++ b/gtk/src/listbox.hg
@@ -331,10 +331,11 @@ public:
   _WRAP_PROPERTY("accept-unpaired-release", bool)
   _WRAP_PROPERTY("show-separators", bool)
 
-  _WRAP_SIGNAL(void row_selected(ListBoxRow* row), row-selected)
-  _WRAP_SIGNAL(void row_activated(ListBoxRow* row), row-activated)
+  // no_default_handler because GtkListBoxClass is private.
+  _WRAP_SIGNAL(void row_selected(ListBoxRow* row), row-selected, no_default_handler)
+  _WRAP_SIGNAL(void row_activated(ListBoxRow* row), row-activated, no_default_handler)
 
-  _WRAP_SIGNAL(void selected_rows_changed(), selected-rows-changed)
+  _WRAP_SIGNAL(void selected_rows_changed(), selected-rows-changed, no_default_handler)
 
   _IGNORE_SIGNAL(activate-cursor-row, toggle-cursor-row, move-cursor, select-all, unselect-all) // Action 
signals
 
diff --git a/gtk/src/menubar.ccg b/gtk/src/menubar.ccg
index 3259ef11..763b6d46 100644
--- a/gtk/src/menubar.ccg
+++ b/gtk/src/menubar.ccg
@@ -51,7 +51,7 @@ void MenuBar::init_accels_handler_()
 {
   if(gobj())
   {
-    if(Window *const toplevel = dynamic_cast<Window*>(get_toplevel()))
+    if(Window *const toplevel = dynamic_cast<Window*>(get_root()))
     {
       accelerate(*toplevel);
     }
diff --git a/gtk/src/menushell.ccg b/gtk/src/menushell.ccg
index be5775bf..7b693529 100644
--- a/gtk/src/menushell.ccg
+++ b/gtk/src/menushell.ccg
@@ -67,8 +67,7 @@ void MenuShell::accelerate(Window& window)
 
 void MenuShell::accelerate(Widget& parent)
 {
-  Gtk::Window* toplevel_window
-      = dynamic_cast<Gtk::Window*>(parent.get_toplevel());
+  Gtk::Window* toplevel_window = dynamic_cast<Gtk::Window*>(parent.get_root());
   if(toplevel_window)
     accelerate(*toplevel_window);
 }
diff --git a/gtk/src/menutoolbutton.hg b/gtk/src/menutoolbutton.hg
index 3206237b..6940b24d 100644
--- a/gtk/src/menutoolbutton.hg
+++ b/gtk/src/menutoolbutton.hg
@@ -65,7 +65,8 @@ public:
   _WRAP_METHOD(void set_arrow_tooltip_text(const Glib::ustring& text), 
gtk_menu_tool_button_set_arrow_tooltip_text)
   _WRAP_METHOD(void set_arrow_tooltip_markup(const Glib::ustring& markup), 
gtk_menu_tool_button_set_arrow_tooltip_markup)
 
-  _WRAP_SIGNAL(void show_menu(), show_menu)
+  // no_default_handler because GtkMenuToolButtonClass is private.
+  _WRAP_SIGNAL(void show_menu(), show_menu, no_default_handler)
   _WRAP_PROPERTY("menu", Menu*)
 };
 
diff --git a/gtk/src/native.ccg b/gtk/src/native.ccg
new file mode 100644
index 00000000..76b290f9
--- /dev/null
+++ b/gtk/src/native.ccg
@@ -0,0 +1,19 @@
+/* Copyright (C) 2019 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 <gdkmm/surface.h>
+#include <gtkmm/widget.h>
diff --git a/gtk/src/native.hg b/gtk/src/native.hg
new file mode 100644
index 00000000..5f347f13
--- /dev/null
+++ b/gtk/src/native.hg
@@ -0,0 +1,72 @@
+/* Copyright (C) 2019 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 <glibmm/interface.h>
+
+_DEFS(gtkmm,gtk)
+_PINCLUDE(glibmm/private/interface_p.h)
+_PINCLUDE(gdk/gdk.h)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C"
+{
+typedef struct _GtkNativeInterface GtkNativeInterface;
+}
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+namespace Gdk
+{
+class Surface;
+}
+
+namespace Gtk
+{
+class Widget;
+
+/** Interface for widgets having surfaces.
+ *
+ * %Gtk::Native is the interface implemented by all widgets that can provide
+ * a Gdk::Surface for widgets to render on.
+ *
+ * The obvious example of a %Gtk::Native is Gtk::Window.
+ *
+ * @see Gtk::Root, Gtk::Window
+ * @newin{3,96}
+ */
+class Native : public Glib::Interface
+{
+  _CLASS_INTERFACE(Native, GtkNative, GTK_NATIVE, GtkNativeInterface)
+
+public:
+  _WRAP_METHOD(static Widget* get_for_surface(const Glib::RefPtr<const Gdk::Surface>& surface),
+    gtk_native_get_for_surface)
+
+  _WRAP_METHOD(void check_resize(), gtk_native_check_resize)
+
+  _WRAP_METHOD(Glib::RefPtr<Gdk::Surface> get_surface(), gtk_native_get_surface, refreturn)
+  _WRAP_METHOD(Glib::RefPtr<const Gdk::Surface> get_surface() const, gtk_native_get_surface, refreturn, 
constversion)
+
+  //?_WRAP_METHOD(GskRenderer* get_renderer(), gtk_native_get_renderer)
+
+protected:
+#m4 _CONVERSION(`Glib::RefPtr<Gdk::Surface>', `GdkSurface*', __CONVERT_REFPTR_TO_P)
+  _WRAP_VFUNC(Glib::RefPtr<Gdk::Surface> get_surface(), "get_surface", refreturn)
+  //?_WRAP_VFUNC(GskRenderer* get_renderer(), "get_renderer")
+  _WRAP_VFUNC(void get_surface_transform(int& x, int& y), "get_surface_transform")
+  _WRAP_VFUNC(void check_resize(), "check_resize")
+};
+
+} // namespace Gtk
diff --git a/gtk/src/notebook.hg b/gtk/src/notebook.hg
index d3f2285c..07862fbc 100644
--- a/gtk/src/notebook.hg
+++ b/gtk/src/notebook.hg
@@ -140,10 +140,11 @@ public:
   _WRAP_METHOD(Glib::RefPtr<Gio::ListModel> get_pages(), gtk_notebook_get_pages)
   _WRAP_METHOD(Glib::RefPtr<const Gio::ListModel> get_pages() const, gtk_notebook_get_pages, constversion)
 
-  _WRAP_SIGNAL(void switch_page(Widget* page, guint page_number), "switch_page")
-  _WRAP_SIGNAL(void page_reordered(Widget* page, guint page_num), "page_reordered")
-  _WRAP_SIGNAL(void page_removed(Widget* page, guint page_num), "page_removed")
-  _WRAP_SIGNAL(void page_added(Widget* page, guint page_num), "page_added")
+  // no_default_handler because GtkNotebookClass is private.
+  _WRAP_SIGNAL(void switch_page(Widget* page, guint page_number), "switch_page", no_default_handler)
+  _WRAP_SIGNAL(void page_reordered(Widget* page, guint page_num), "page_reordered", no_default_handler)
+  _WRAP_SIGNAL(void page_removed(Widget* page, guint page_num), "page_removed", no_default_handler)
+  _WRAP_SIGNAL(void page_added(Widget* page, guint page_num), "page_added", no_default_handler)
 
   //Key-binding signals:
   _IGNORE_SIGNAL("move_focus_out")
diff --git a/gtk/src/overlay.hg b/gtk/src/overlay.hg
index 3ee358ec..a60f63f5 100644
--- a/gtk/src/overlay.hg
+++ b/gtk/src/overlay.hg
@@ -63,8 +63,10 @@ public:
   _WRAP_METHOD(bool get_clip_overlay(const Widget& widget) const, gtk_overlay_get_clip_overlay)
   _WRAP_METHOD(void set_clip_overlay(const Widget& widget, bool clip_overlay = true), 
gtk_overlay_set_clip_overlay)
 
+  // no_default_handler because GtkOverlayClass is private.
 #m4 _CONVERSION(`GdkRectangle*',`Gdk::Rectangle&',`Glib::wrap($3)')
-  _WRAP_SIGNAL(bool get_child_position(Gtk::Widget* widget, Gdk::Rectangle& allocation), 
"get-child-position")
+  _WRAP_SIGNAL(bool get_child_position(Gtk::Widget* widget, Gdk::Rectangle& allocation),
+    "get-child-position", no_default_handler)
 };
 
 } // namespace Gtk
diff --git a/gtk/src/popover.hg b/gtk/src/popover.hg
index 22a48029..59e0597a 100644
--- a/gtk/src/popover.hg
+++ b/gtk/src/popover.hg
@@ -17,6 +17,7 @@
  */
 
 #include <gtkmm/bin.h>
+#include <gtkmm/native.h>
 #include <giomm/menumodel.h>
 
 _DEFS(gtkmm,gtk)
@@ -41,16 +42,16 @@ namespace Gtk
  * input events get redirected to it while it is shown, and also so
  * the popover is dismissed in the expected situations (clicks outside
  * the popover, or the Esc key being pressed). If no such modal behavior
- * is desired on a popover, Gtk::Popover::set_modal() may be called on it
+ * is desired on a popover, Gtk::Popover::set_autohide() may be called on it
  * to tweak its behavior.
  *
  * @ingroup Widgets
  * @newin{3,12}
  */
-class Popover
-  : public Bin
+class Popover : public Bin, public Native
 {
   _CLASS_GTKOBJECT(Popover, GtkPopover, GTK_POPOVER, Gtk::Bin, GtkBin)
+  _IMPLEMENTS_INTERFACE(Native)
 public:
   _WRAP_ENUM(Constraint, GtkPopoverConstraint)
 
@@ -115,27 +116,24 @@ public:
   _WRAP_METHOD(void set_position(PositionType position = PositionType::TOP), gtk_popover_set_position)
   _WRAP_METHOD(PositionType get_position() const, gtk_popover_get_position)
 
-  _WRAP_METHOD(void set_modal(bool modal = true), gtk_popover_set_modal)
-  _WRAP_METHOD(bool get_modal() const, gtk_popover_get_modal)
+  _WRAP_METHOD(void set_autohide(bool autohide = true), gtk_popover_set_autohide)
+  _WRAP_METHOD(bool get_autohide() const, gtk_popover_get_autohide)
+
+  _WRAP_METHOD(void set_has_arrow(bool has_arrow = true), gtk_popover_set_has_arrow)
+  _WRAP_METHOD(bool get_has_arrow() const, gtk_popover_get_has_arrow)
 
   _WRAP_METHOD(void bind_model(const Glib::RefPtr<Gio::MenuModel>& model, const Glib::ustring& 
action_namespace{?}), gtk_popover_bind_model)
 
   _WRAP_METHOD(void set_default_widget(Widget& widget), gtk_popover_set_default_widget)
 
-  _WRAP_METHOD(Widget* get_default_widget(), gtk_popover_get_default_widget)
-  _WRAP_METHOD(const Widget* get_default_widget() const, gtk_popover_get_default_widget, constversion)
-
-  _WRAP_METHOD(void set_constrain_to(Constraint constraint), gtk_popover_set_constrain_to)
-  _WRAP_METHOD(Constraint get_constrain_to() const, gtk_popover_get_constrain_to)
-
   _WRAP_METHOD(void popup(), gtk_popover_popup)
   _WRAP_METHOD(void popdown(), gtk_popover_popdown)
 
   _WRAP_PROPERTY("relative-to", Widget*)
   _WRAP_PROPERTY("pointing-to", Gdk::Rectangle)
   _WRAP_PROPERTY("position", PositionType)
-  _WRAP_PROPERTY("modal", bool)
-  _WRAP_PROPERTY("constrain-to", Constraint)
+  _WRAP_PROPERTY("autohide", bool)
+  _WRAP_PROPERTY("has-arrow", bool)
   _WRAP_PROPERTY("default-widget", Widget*)
 
   _WRAP_SIGNAL(void closed(), "closed")
diff --git a/gtk/src/printer.hg b/gtk/src/printer.hg
index 3c7af8d9..324fd6bc 100644
--- a/gtk/src/printer.hg
+++ b/gtk/src/printer.hg
@@ -45,13 +45,6 @@ class Printer : public Glib::Object
   _GTKMMPROC_WIN32_NO_WRAP
 
 public:
-  //TODO: _WRAP_CREATE() - probably not, it's only accessible through PrintUnixDialog + GtkPrintBackend 
should be ignored
-  //TODO: I think these are not needed as well, and that Printer should generally be read-only - marko.
-  _IGNORE(gtk_printer_is_new, gtk_printer_set_state_message, gtk_printer_set_is_default,
-          gtk_printer_set_is_accepting_jobs, gtk_printer_set_is_paused)
-  _IGNORE(gtk_printer_set_is_active, gtk_printer_set_has_details, gtk_printer_set_description)
-  _IGNORE(gtk_printer_set_icon_name, gtk_printer_set_job_count, gtk_printer_set_is_new, 
gtk_printer_set_location)
-
   bool equal(const Glib::RefPtr<Printer>& other) const;
 
   //GtkPrintBackend is in a "semi-private" header.
@@ -72,7 +65,6 @@ public:
   _WRAP_METHOD(bool is_default() const, gtk_printer_is_default)
   _WRAP_METHOD(bool accepts_pdf() const, gtk_printer_accepts_pdf)
   _WRAP_METHOD(bool accepts_ps() const, gtk_printer_accepts_ps)
-  _IGNORE(gtk_printer_set_accepts_pdf, gtk_printer_set_accepts_ps)
 
 #m4 _CONVERSION(`GList*', `std::vector< Glib::RefPtr<PageSetup> >', `Glib::ListHandler< 
Glib::RefPtr<PageSetup> >::list_to_vector($3, Glib::OWNERSHIP_DEEP)')
   _WRAP_METHOD(std::vector< Glib::RefPtr<PageSetup> > list_papers(), gtk_printer_list_papers)
@@ -92,7 +84,8 @@ public:
   _WRAP_METHOD(bool get_hard_margins(const PaperSize& paper_size, double& top, double& bottom, double& left, 
double& right) const,
     gtk_printer_get_hard_margins_for_paper_size)
 
-  _WRAP_SIGNAL(void details_acquired(bool success), "details_acquired")
+  // no_default_handler because GtkPrinterClass is private.
+  _WRAP_SIGNAL(void details_acquired(bool success), "details_acquired", no_default_handler)
 
   _WRAP_PROPERTY("name", Glib::ustring)
 
diff --git a/gtk/src/printjob.hg b/gtk/src/printjob.hg
index f9b59a56..34aea435 100644
--- a/gtk/src/printjob.hg
+++ b/gtk/src/printjob.hg
@@ -107,9 +107,8 @@ public:
   _WRAP_METHOD(bool get_reverse() const, gtk_print_job_get_reverse)
   _WRAP_METHOD(void set_reverse(bool reverse = true), gtk_print_job_set_reverse)
 
-
-
-  _WRAP_SIGNAL(void status_changed(), "status_changed")
+  // no_default_handler because GtkPrintJobClass is private.
+  _WRAP_SIGNAL(void status_changed(), "status_changed", no_default_handler)
 
   _WRAP_PROPERTY("title", Glib::ustring)
   _WRAP_PROPERTY("printer", Glib::RefPtr<Printer>)
diff --git a/gtk/src/radiobutton.hg b/gtk/src/radiobutton.hg
index e33f1a1f..a48df7c1 100644
--- a/gtk/src/radiobutton.hg
+++ b/gtk/src/radiobutton.hg
@@ -93,7 +93,8 @@ public:
 
   _WRAP_METHOD(void join_group(RadioButton& group_source), gtk_radio_button_join_group)
 
-  _WRAP_SIGNAL(void group_changed(), "group_changed")
+  // no_default_handler because GtkRadioButtonClass is private.
+  _WRAP_SIGNAL(void group_changed(), "group_changed", no_default_handler)
 
   /// Note that %property_group() corresponds to join_group(), rather than to get_group() and set_group().
   _WRAP_PROPERTY("group", RadioButton*, newin "3,22")
diff --git a/gtk/src/radiomenuitem.hg b/gtk/src/radiomenuitem.hg
index e935a524..93ec17a4 100644
--- a/gtk/src/radiomenuitem.hg
+++ b/gtk/src/radiomenuitem.hg
@@ -64,7 +64,8 @@ public:
 #m4 _CONVERSION(`RadioMenuItem&',`GtkRadioMenuItem*',`($3).gobj()')
   _WRAP_METHOD(void join_group(RadioMenuItem& group_source), gtk_radio_menu_item_join_group, newin "3,22")
 
-  _WRAP_SIGNAL(void group_changed(), "group_changed")
+  // no_default_handler because GtkRadioMenuItemClass is private.
+  _WRAP_SIGNAL(void group_changed(), "group_changed", no_default_handler)
 
   /// Note that %property_group() corresponds to join_group(), rather than to get_group() and set_group().
   _WRAP_PROPERTY("group", RadioMenuItem*, newin "3,22")
diff --git a/gtk/src/root.hg b/gtk/src/root.hg
index 5d0ca9c9..f35566da 100644
--- a/gtk/src/root.hg
+++ b/gtk/src/root.hg
@@ -37,7 +37,7 @@ namespace Gtk
 {
 class Widget;
 
-/** Root widgets.
+/** Interface for root widgets.
  *
  * %Gtk::Root is the interface implemented by all widgets that can act as a toplevel
  * widget to a hierarchy of widgets. The root widget takes care of providing the
@@ -54,8 +54,8 @@ class Root : public Glib::Interface
   _CLASS_INTERFACE(Root, GtkRoot, GTK_ROOT, GtkRootInterface)
 
 public:
-  _WRAP_METHOD(static Widget* get_for_surface(const Glib::RefPtr<const Gdk::Surface>& surface),
-    gtk_root_get_for_surface)
+  _WRAP_METHOD(Glib::RefPtr<Gdk::Display> get_display(), gtk_root_get_display, refreturn)
+  _WRAP_METHOD(Glib::RefPtr<const Gdk::Display> get_display() const, gtk_root_get_display, refreturn, 
constversion)
 
   /** If @a focus is not the current focus widget, and is focusable, sets
    * it as the focus widget for the root.
@@ -79,8 +79,6 @@ public:
 protected:
 #m4 _CONVERSION(`Glib::RefPtr<Gdk::Display>', `GdkDisplay*', __CONVERT_REFPTR_TO_P)
   _WRAP_VFUNC(Glib::RefPtr<Gdk::Display> get_display(), "get_display", refreturn)
-  //?_WRAP_VFUNC(GskRenderer* get_renderer(), "get_renderer")
-  _WRAP_VFUNC(void get_surface_transform(int& x, int& y), "get_surface_transform")
 };
 
 } // namespace Gtk
diff --git a/gtk/src/searchentry.hg b/gtk/src/searchentry.hg
index 26a9b67b..f5ba9e24 100644
--- a/gtk/src/searchentry.hg
+++ b/gtk/src/searchentry.hg
@@ -66,14 +66,14 @@ public:
   _WRAP_METHOD(const Widget* get_key_capture_widget() const, gtk_search_entry_get_key_capture_widget, 
constversion)
   void unset_key_capture_widget();
 
+  // no_default_handler because GtkSearchEntryClass is private.
   _IGNORE_SIGNAL("activate")dnl// Action signal
-  _WRAP_SIGNAL(void search_changed(), "search-changed")
+  _WRAP_SIGNAL(void search_changed(), "search-changed", no_default_handler)
   // Although next-match, previous-match and stop-search are keybinding signals,
   // applications shall connect to them.
-  _WRAP_SIGNAL(void next_match(), "next-match")
-  _WRAP_SIGNAL(void previous_match(), "previous-match")
-  _WRAP_SIGNAL(void stop_search(), "stop-search")
-  // no_default_handler because the wrapped C signal has no default handler.
+  _WRAP_SIGNAL(void next_match(), "next-match", no_default_handler)
+  _WRAP_SIGNAL(void previous_match(), "previous-match", no_default_handler)
+  _WRAP_SIGNAL(void stop_search(), "stop-search", no_default_handler)
   _WRAP_SIGNAL(void search_started(), "search-started", no_default_handler)
 
   _WRAP_PROPERTY("placeholder-text", Glib::ustring)
diff --git a/gtk/src/spinbutton.hg b/gtk/src/spinbutton.hg
index db23abb5..ba63e788 100644
--- a/gtk/src/spinbutton.hg
+++ b/gtk/src/spinbutton.hg
@@ -104,10 +104,11 @@ public:
    */
   enum { INPUT_ERROR = -1 };
 
-  _WRAP_SIGNAL(int input(double& new_value), "input")
-  _WRAP_SIGNAL(bool output(), "output")
-  _WRAP_SIGNAL(void wrapped(), "wrapped")
-  _WRAP_SIGNAL(void value_changed(), "value_changed")
+  // no_default_handler because GtkSpinButtonClass is private.
+  _WRAP_SIGNAL(int input(double& new_value), "input", no_default_handler)
+  _WRAP_SIGNAL(bool output(), "output", no_default_handler)
+  _WRAP_SIGNAL(void wrapped(), "wrapped", no_default_handler)
+  _WRAP_SIGNAL(void value_changed(), "value_changed", no_default_handler)
 
   //Keybinding signals:
   _IGNORE_SIGNAL("change_value")
diff --git a/gtk/src/statusbar.hg b/gtk/src/statusbar.hg
index 972ee52e..996e9ab0 100644
--- a/gtk/src/statusbar.hg
+++ b/gtk/src/statusbar.hg
@@ -71,9 +71,10 @@ public:
   _WRAP_METHOD(Gtk::Widget* get_message_area(), gtk_statusbar_get_message_area)
   _WRAP_METHOD(const Gtk::Widget* get_message_area() const, gtk_statusbar_get_message_area, constversion)
 
+  // no_default_handler because GtkStatusbarClass is private.
 #m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
-  _WRAP_SIGNAL(void text_pushed(guint context_id, const Glib::ustring& text), "text_pushed")
-  _WRAP_SIGNAL(void text_popped(guint context_id, const Glib::ustring& text), "text_popped")
+  _WRAP_SIGNAL(void text_pushed(guint context_id, const Glib::ustring& text), "text_pushed", 
no_default_handler)
+  _WRAP_SIGNAL(void text_popped(guint context_id, const Glib::ustring& text), "text_popped", 
no_default_handler)
 };
 
 } //namespace Gtk
diff --git a/gtk/src/switch.hg b/gtk/src/switch.hg
index ff9f8ad5..a41f18c1 100644
--- a/gtk/src/switch.hg
+++ b/gtk/src/switch.hg
@@ -55,7 +55,8 @@ public:
   //activate is an action signal that's documented as not for use by applications.
   _IGNORE_SIGNAL("activate")
 
-  _WRAP_SIGNAL(bool state_set(bool state), "state-set")
+  // no_default_handler because GtkSwitchClass is private.
+  _WRAP_SIGNAL(bool state_set(bool state), "state-set", no_default_handler)
 };
 
 } // namespace Gtk
diff --git a/gtk/src/texttagtable.hg b/gtk/src/texttagtable.hg
index 36a0d528..4f9575a3 100644
--- a/gtk/src/texttagtable.hg
+++ b/gtk/src/texttagtable.hg
@@ -58,11 +58,12 @@ public:
 
   _WRAP_METHOD(int get_size() const, gtk_text_tag_table_get_size)
 
-_CONVERSION(`GtkTextTag*',`const Glib::RefPtr<TextTag>&',`Glib::wrap($3, true)')
-  _WRAP_SIGNAL(void tag_changed(const Glib::RefPtr<TextTag>& tag, bool size_changed), "tag_changed")
-
-  _WRAP_SIGNAL(void tag_added(const Glib::RefPtr<TextTag>& tag), "tag_added")
-  _WRAP_SIGNAL(void tag_removed(const Glib::RefPtr<TextTag>& tag), "tag_removed")
+  // no_default_handler because GtkTextTagTableClass is private.
+#m4 _CONVERSION(`GtkTextTag*',`const Glib::RefPtr<TextTag>&',`Glib::wrap($3, true)')
+  _WRAP_SIGNAL(void tag_changed(const Glib::RefPtr<TextTag>& tag, bool size_changed),
+    "tag_changed", no_default_handler)
+  _WRAP_SIGNAL(void tag_added(const Glib::RefPtr<TextTag>& tag), "tag_added", no_default_handler)
+  _WRAP_SIGNAL(void tag_removed(const Glib::RefPtr<TextTag>& tag), "tag_removed", no_default_handler)
 
 };
 
diff --git a/gtk/src/toolbar.hg b/gtk/src/toolbar.hg
index 53cf9526..f154cc95 100644
--- a/gtk/src/toolbar.hg
+++ b/gtk/src/toolbar.hg
@@ -78,9 +78,10 @@ public:
   _WRAP_METHOD(void set_drop_highlight_item(ToolItem& tool_item, int index), 
gtk_toolbar_set_drop_highlight_item)
   void unset_drop_highlight_item();
 
-  _WRAP_SIGNAL(void orientation_changed(Orientation orientation), "orientation_changed")
-  _WRAP_SIGNAL(void toolbar_style_changed(ToolbarStyle style), "style_changed")
-  _WRAP_SIGNAL(bool popup_context_menu(int x, int y, int button_number), "popup_context_menu")
+  // no_default_handler because GtkToolbarClass is private.
+  _WRAP_SIGNAL(void orientation_changed(Orientation orientation), "orientation_changed", no_default_handler)
+  _WRAP_SIGNAL(void toolbar_style_changed(ToolbarStyle style), "style_changed", no_default_handler)
+  _WRAP_SIGNAL(bool popup_context_menu(int x, int y, int button_number), "popup_context_menu", 
no_default_handler)
 
   _IGNORE_SIGNAL("focus_home_or_end")
 
diff --git a/gtk/src/treeselection.hg b/gtk/src/treeselection.hg
index 9bb1b308..e7aa673e 100644
--- a/gtk/src/treeselection.hg
+++ b/gtk/src/treeselection.hg
@@ -214,7 +214,8 @@ public:
 
   _WRAP_PROPERTY("mode", SelectionMode)
 
-  _WRAP_SIGNAL(void changed(), "changed")
+  // no_default_handler because GtkTreeSelectionClass is private.
+  _WRAP_SIGNAL(void changed(), "changed", no_default_handler)
 };
 
 } // namespace Gtk
diff --git a/gtk/src/treeview.hg b/gtk/src/treeview.hg
index 3d720b02..e8c9a39e 100644
--- a/gtk/src/treeview.hg
+++ b/gtk/src/treeview.hg
@@ -781,14 +781,14 @@ dnl // not.  Fortunately we can use the `self' parameter to get our hands on the
 dnl // GtkTreeModel*.
 _CONVERSION(`GtkTreeIter*',`const TreeModel::iterator&',`TreeModel::iterator(gtk_tree_view_get_model(self), 
$3)')
 #m4end
-
-  _WRAP_SIGNAL(void row_activated(const TreeModel::Path& path, TreeViewColumn* column) , "row-activated")
-  _WRAP_SIGNAL(bool test_expand_row(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"test-expand-row")
-  _WRAP_SIGNAL(bool test_collapse_row(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"test-collapse-row")
-  _WRAP_SIGNAL(void row_expanded(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"row-expanded")
-  _WRAP_SIGNAL(void row_collapsed(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"row-collapsed")
-  _WRAP_SIGNAL(void cursor_changed(), "cursor-changed")
-  _WRAP_SIGNAL(void columns_changed(), "columns-changed")
+  // no_default_handler because GtkTreeViewClass is private.
+  _WRAP_SIGNAL(void row_activated(const TreeModel::Path& path, TreeViewColumn* column) , "row-activated", 
no_default_handler)
+  _WRAP_SIGNAL(bool test_expand_row(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"test-expand-row", no_default_handler)
+  _WRAP_SIGNAL(bool test_collapse_row(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"test-collapse-row", no_default_handler)
+  _WRAP_SIGNAL(void row_expanded(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"row-expanded", no_default_handler)
+  _WRAP_SIGNAL(void row_collapsed(const TreeModel::iterator& iter, const TreeModel::Path& path), 
"row-collapsed", no_default_handler)
+  _WRAP_SIGNAL(void cursor_changed(), "cursor-changed", no_default_handler)
+  _WRAP_SIGNAL(void columns_changed(), "columns-changed", no_default_handler)
 
   //Don't wrap these. They are keybinding signals, and their API broke for GTK+ 2.2.
   _IGNORE_SIGNAL("move-cursor")
@@ -800,7 +800,6 @@ _CONVERSION(`GtkTreeIter*',`const TreeModel::iterator&',`TreeModel::iterator(gtk
   _IGNORE_SIGNAL("select-cursor-parent")
   _IGNORE_SIGNAL("start-interactive-search")
 
-
   _WRAP_PROPERTY("model", Glib::RefPtr<TreeModel>)
   _WRAP_PROPERTY("headers-visible", bool)
   _WRAP_PROPERTY("headers-clickable", bool)
diff --git a/gtk/src/treeviewcolumn.hg b/gtk/src/treeviewcolumn.hg
index bff566b9..cacd3478 100644
--- a/gtk/src/treeviewcolumn.hg
+++ b/gtk/src/treeviewcolumn.hg
@@ -208,7 +208,8 @@ void set_renderer(Gtk::CellRenderer& renderer, const TreeModelColumnBase& column
   _WRAP_METHOD(Button* get_button(), gtk_tree_view_column_get_button, refreturn)
   _WRAP_METHOD(const Button* get_button() const, gtk_tree_view_column_get_button, refreturn, constversion)
 
-  _WRAP_SIGNAL(void clicked(), "clicked")
+  // no_default_handler because GtkTreeViewColumnClass is private.
+  _WRAP_SIGNAL(void clicked(), "clicked", no_default_handler)
 
   _WRAP_PROPERTY("visible", bool)
   _WRAP_PROPERTY("resizable", bool)
diff --git a/gtk/src/widget.ccg b/gtk/src/widget.ccg
index b50faf3b..30c56b06 100644
--- a/gtk/src/widget.ccg
+++ b/gtk/src/widget.ccg
@@ -364,13 +364,6 @@ Widget* Widget::get_current_modal_grab()
   return Glib::wrap(gtk_grab_get_current());
 }
 
-void Widget::set_surface(const Glib::RefPtr<Gdk::Surface>& surface)
-{
-  gtk_widget_set_surface(gobj(), Glib::unwrap(surface));
-  if (surface)
-    surface->reference(); // gtk_widget_set_surface does not add a ref.
-}
-
 Allocation Widget::get_allocation() const
 {
   Allocation allocation;
diff --git a/gtk/src/widget.hg b/gtk/src/widget.hg
index f7165050..1e47cfba 100644
--- a/gtk/src/widget.hg
+++ b/gtk/src/widget.hg
@@ -31,7 +31,6 @@ _CONFIGINCLUDE(gtkmmconfig.h)
 #include <gtkmm/buildable.h>
 #include <gdkmm/events.h>
 #include <gdkmm/types.h>
-#include <gdkmm/surface.h>
 #include <gdkmm/drag.h>
 #include <gdkmm/drop.h>
 #include <gtkmm/enums.h>
@@ -219,8 +218,6 @@ public:
   _WRAP_METHOD(void set_visible(bool visible = true), gtk_widget_set_visible)
   _WRAP_METHOD(bool get_visible() const, gtk_widget_get_visible)
   _WRAP_METHOD(bool is_visible() const, gtk_widget_is_visible)
-  _WRAP_METHOD(bool get_has_surface() const, gtk_widget_get_has_surface)
-  _WRAP_METHOD(bool get_is_toplevel() const, gtk_widget_is_toplevel)
   _WRAP_METHOD(bool get_is_drawable() const, gtk_widget_is_drawable)
   _WRAP_METHOD(bool get_realized() const, gtk_widget_get_realized)
   _WRAP_METHOD(bool get_mapped() const, gtk_widget_get_mapped)
@@ -228,12 +225,6 @@ public:
   _WRAP_METHOD(void set_child_visible(bool visible = true), gtk_widget_set_child_visible)
   _WRAP_METHOD(bool get_child_visible() const, gtk_widget_get_child_visible)
 
-  _WRAP_METHOD(Glib::RefPtr<Gdk::Surface> get_surface(), gtk_widget_get_surface, refreturn)
-  _WRAP_METHOD(Glib::RefPtr<const Gdk::Surface> get_surface() const, gtk_widget_get_surface, refreturn, 
constversion)
-
-  _WRAP_METHOD(void register_surface(const Glib::RefPtr<Gdk::Surface>& surface), gtk_widget_register_surface)
-  _WRAP_METHOD(void unregister_surface(const Glib::RefPtr<Gdk::Surface>& surface), 
gtk_widget_unregister_surface)
-
   _WRAP_METHOD(int get_allocated_width() const, gtk_widget_get_allocated_width)
   _WRAP_METHOD(int get_allocated_height() const, gtk_widget_get_allocated_height)
   _WRAP_METHOD(int get_allocated_baseline() const, gtk_widget_get_allocated_baseline)
@@ -278,9 +269,6 @@ public:
   _WRAP_METHOD(void set_overflow(Overflow overflow), gtk_widget_set_overflow, newin "3,96")
   _WRAP_METHOD(Overflow get_overflow() const, gtk_widget_get_overflow, newin "3,96")
 
-  _WRAP_METHOD(Container* get_toplevel(), gtk_widget_get_toplevel)
-  _WRAP_METHOD(const Container* get_toplevel() const, gtk_widget_get_toplevel, constversion)
-
   _WRAP_METHOD(Widget* get_ancestor(GType widget_type), gtk_widget_get_ancestor)
   _WRAP_METHOD(const Widget* get_ancestor(GType widget_type) const, gtk_widget_get_ancestor, constversion)
 
@@ -732,7 +720,6 @@ dnl
   _WRAP_PROPERTY("has_tooltip", bool)
   _WRAP_PROPERTY("tooltip_markup", Glib::ustring)
   _WRAP_PROPERTY("tooltip_text", Glib::ustring)
-  _WRAP_PROPERTY("surface", Glib::RefPtr<Gdk::Surface>)
 
   _WRAP_PROPERTY("halign", Align)
   _WRAP_PROPERTY("valign", Align)
@@ -775,27 +762,6 @@ protected:
   _WRAP_METHOD(void realize(), gtk_widget_realize)
   _WRAP_METHOD(void unrealize(), gtk_widget_unrealize)
 
-  _WRAP_METHOD(void set_has_surface(bool has_surface = true), gtk_widget_set_has_surface)
-
-  /** Sets a widget's surface. This function should only be used in a
-   * widget's Gtk::Widget::on_realize() implementation. The %a surface passed is
-   * usually either a new surface created with Gdk::Surface::create(), or the
-   * surface of its parent widget as returned by get_parent()->get_surface().
-   *
-   * Widgets must indicate whether they will create their own Gdk::Surface
-   * by calling set_has_surface(). This is usually done in the
-   * widget's constructor.
-   *
-   * This function should only be called by custom widget implementations,
-   * and they should call it in their on_realize() function.
-   *
-   * @newin{2,18}
-   *
-   * @param surface A Gdk::Surface.
-   */
-  void set_surface(const Glib::RefPtr<Gdk::Surface>& surface);
-  _IGNORE(gtk_widget_set_surface)
-
   void realize_if_needed();
 
   _WRAP_METHOD(void set_focus_child(Widget& child), gtk_widget_set_focus_child)
diff --git a/gtk/src/window.hg b/gtk/src/window.hg
index a8477004..32f8c2bc 100644
--- a/gtk/src/window.hg
+++ b/gtk/src/window.hg
@@ -21,6 +21,7 @@
 #include <glibmm/object.h>
 #include <gdkmm/texture.h>
 #include <gtkmm/bin.h>
+#include <gtkmm/native.h>
 #include <gtkmm/root.h>
 #include <gtkmm/application.h>
 #include <gtkmm/windowgroup.h>
@@ -48,9 +49,10 @@ class WindowGroup;
  * Gtk::manage() has no effect on Windows because they have no parent Containers.
  * @ingroup Widgets
  */
-class Window : public Bin, public Root
+class Window : public Bin, public Native, public Root
 {
   _CLASS_GTKOBJECT(Window,GtkWindow,GTK_WINDOW,Gtk::Bin,GtkBin)
+  _IMPLEMENTS_INTERFACE(Native)
   _IMPLEMENTS_INTERFACE(Root)
   _UNMANAGEABLE
   _IGNORE(gtk_window_set_has_user_ref_count, gtk_window_set_destroy_with_parent)
@@ -58,6 +60,11 @@ class Window : public Bin, public Root
   //TODO: Use gtk_window_set_destroy_with_parent() to allow use of Gtk::manage() with top-level windows, 
using the transient-parent?
 
 public:
+  // Disambiguate calls to get_display(). Use Root::get_display(), not Widget::get_display().
+  // gtk_widget_get_display() calls gtk_root_get_display(). There is no reason
+  // to call gtk_widget_get_display() from a class that implements GtkRoot.
+  using Root::get_display;
+
   _WRAP_CTOR(Window(WindowType type = WindowType::TOPLEVEL), gtk_window_new)
 
   _WRAP_PROPERTY("type", WindowType)
@@ -65,7 +72,6 @@ public:
   _WRAP_PROPERTY("startup-id", Glib::ustring)
   _WRAP_PROPERTY("resizable", bool)
   _WRAP_PROPERTY("modal", bool)
-  _WRAP_PROPERTY("window_position", WindowPosition)
   _WRAP_PROPERTY("default_width", int)
   _WRAP_PROPERTY("default_height", int)
   _WRAP_PROPERTY("destroy_with_parent", bool)
@@ -122,9 +128,6 @@ dnl
   _WRAP_METHOD(void remove_accel_group(const Glib::RefPtr<AccelGroup>& accel_group),
                gtk_window_remove_accel_group)
 
-  _WRAP_METHOD(void set_position(WindowPosition position),
-               gtk_window_set_position)
-
   _WRAP_METHOD(void set_focus(Gtk::Widget& focus), gtk_window_set_focus)
   void unset_focus();
 
diff --git a/tools/extra_defs_gen/generate_defs_gtk.cc b/tools/extra_defs_gen/generate_defs_gtk.cc
index 7c9de811..bd91c494 100644
--- a/tools/extra_defs_gen/generate_defs_gtk.cc
+++ b/tools/extra_defs_gen/generate_defs_gtk.cc
@@ -114,9 +114,9 @@ int main(int /* argc */, char** /* argv */)
             << get_defs( GTK_TYPE_FONT_CHOOSER_WIDGET )
             << get_defs( GTK_TYPE_FRAME )
             << get_defs( GTK_TYPE_GESTURE )
+            << get_defs( GTK_TYPE_GESTURE_CLICK )
             << get_defs( GTK_TYPE_GESTURE_DRAG )
             << get_defs( GTK_TYPE_GESTURE_LONG_PRESS )
-            << get_defs( GTK_TYPE_GESTURE_MULTI_PRESS )
             << get_defs( GTK_TYPE_GESTURE_PAN )
             << get_defs( GTK_TYPE_GESTURE_ROTATE )
             << get_defs( GTK_TYPE_GESTURE_SINGLE )
diff --git a/tools/m4/convert_gtk.m4 b/tools/m4/convert_gtk.m4
index f06edd08..79b82339 100644
--- a/tools/m4/convert_gtk.m4
+++ b/tools/m4/convert_gtk.m4
@@ -92,7 +92,6 @@ _CONV_INCLASS_ENUM(Gtk,TreeView,DropPosition)
 _CONV_INCLASS_ENUM(Gtk,TreeView,GridLines)
 _CONV_ENUM(Gtk,UpdateType)
 _CONV_ENUM(Gtk,Visibility)
-_CONV_ENUM(Gtk,WindowPosition)
 _CONV_ENUM(Gtk,WindowType)
 _CONV_ENUM(Gtk,WrapMode)
 _CONV_INCLASS_ENUM(Gtk,FileChooser,Action)


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