2022-03-21  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  4.6.1

2022-03-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  CI: Use artifacts to transfer data between stages

  Build documentation of libsigc++, glibmm, cairomm and pangomm,
  or else gtkmm's inheritance diagrams will be incomplete due to
  missing tag files.

2022-03-13  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gtk::Application::make_window_and_run(): Delay the deletion

  Let Gtk::Object::destroy_notify_() delete the created C++ wrapper
  (a Gtk::Window or a descendant of Gtk::Window) when the underlying
  C instance is destroyed. Signal handlers such as on_unrealize()
  are then called before the C++ wrapper is deleted. Fixes #114

2022-03-11  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  enum Gdk::GLAPI: Name clash with epoxy/gl.h

  * gdk/src/glcontext.hg: GLAPI is defined as a preprocessor macro in
  epoxy/gl.h. Add some #ifndef and comments for now. When we can add API,
  deprecate all API with GLAPI and add an equivalent enum Gdk::GLApi.
  See #113

2022-02-27  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  CI: Select latest released version of libsigc++3

2022-02-27  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  meson.build: Check if Perl is required for building documentation

  New versions of mm-common use the Python scripts doc_postprocess.py
  and doc_install.py instead of the Perl scripts doc-postprocess.pl and
  doc-install.pl when documentation is built.

2022-02-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  meson.build: Don't use deprecated execute(..., gui_app: ...)

  Don't use deprecated python3.path() and execute(..., gui_app: ...).
  Let import('python').find_installation() always find the python
  installation used to run Meson.
  Fixes #111

2022-02-16  Baldvin Kovacs  <baldvin.kovacs@gmail.com>

  Fix object ownership in the wrapper of the render signal.

  This change ensures that the wrapper implementation of the render
  signal emission does not take ownership of the underlying cairo_region_t
  C instance. It is necessary, because the C implementation expects to
  keep ownership, and destroys the underlying C instance after the signal
  was emitted.
  
  The wrapped signal is emitted from gdk_surface_process_update_internal.
  
  The relevant lines:
  
  expose_region = cairo_region_copy (surface->active_update_area);
  
  // here expose_region has a reference count of 1
  
  g_signal_emit (surface, signals[RENDER], 0, expose_region, &handled);
  
  // ...and here it needs to remain one, but with the current implementation
  // we get a double destroy below:
  
  cairo_region_destroy (expose_region);

2022-02-09  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  CI: Install modules required for building gtk4

  If the gtk4 version in ubuntu:devel is too old, gtk4 is built as
  a subproject to gtkmm.