2020-12-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  2.68.0

2020-12-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib, Gio: Regenerate docs.xml and .defs files

  and update gio/src/gio_docs_override.xml.
  
  Regenerated while the glib-2-66 branch was checked out from glib.

2020-12-14  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Binding, TimeZone: Ignore deprecation of some glib functions

  g_binding_get_source(), g_binding_get_target() and g_time_zone_new()
  are deprecated in glib 2.68. We can't use the replacement functions,
  which are new in glib 2.68. We want to build with -Dwarnings=fatal
  and run with both glib 2.68 and older versions of glib.

2020-12-13  Pavlo Solntsev  <p.sun.fun@gmail.com>

  CI: Replacing old comments with correct ones

  The old comments were automatically added when initial version of the
  script was created. Here we repalce them with meaningful comments.

2020-12-11  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Change the ABI to glibmm-2.68

  So we can use the 2.66 version numbers for stable releases in the
  glibmm-2.4 ABI series.
  
  We've done similar ABI name changes several times before.

2020-12-10  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  tests/glibmm_tls_client: Skip test, if socket can't be connected

  This test sometimes fails in CI runs, probably for a reason that's out
  of glibmm's control.

2020-12-09  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  tests/glibmm_tls_client: Catch exceptions from more function calls

  Gio::Socket::create() can throw an exception. Put it in a try block.
  See #84

2020-12-08  Pavlo Solntsev  <p.sun.fun@gmail.com>

  CI: Adding build and test job for clang compiler

  Release build and test was added for clang compiler.

2020-12-08  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Binding: Avoid warning from gcc-10

  g++-10 with optimization level -O1 or higher warns about possible use of
  an uninitialized variable when tests/glibmm_binding/main.cc is compiled.
  I don't understand why.
  
  There is no warning if the private method Glib::Binding::TransformProp::
  operator()() is compiled without optimization. Add an attribute that turns
  off optimization for this method when it's compiled with with gcc-10 or
  higher. gcc-9 does not warn. gcc-10 does not warn in glibmm-2.4, where
  std::optional is not used.

2020-12-07  Pavlo Solntsev  <p.sun.fun@gmail.com>

  CI: Updating config file to reflect recent changes

  CI configuration file is updated to support meson and autotools builds
  for glibmm. libsigc++ version is updated up to 3.0.6 and it will be built
  using meson only.
  
  See #84 for details

2020-11-21  Tom Schoonjans  <Tom.Schoonjans@rfi.ac.uk>

  Meson build: fix is_os_cocoa detection

  The previous check didnt work as the compiler choked on the Objective-C code
  that was dragged in by the Cocoa headers.
  
  This patch simplifies things by simply asking what system the host is
  running on.

2020-11-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Remove unnecessary TODO and README files

2020-11-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  generate_wrap_init.pl.in: Use g_type_ensure()

  Call g_type_ensure(SomeClass::get_type()).
  
  Redefining the G_GNUC_CONST preprocessor macro does not have the
  intended effect (SomeClass::get_type() actually being called) if
  the package is compiled and linked with the -flto option.
  LTO = link time optimization
  
  https://mail.gnome.org/archives/gtkmm-list/2020-November/msg00009.html

2020-11-01  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::File docs: Fix names of thrown exceptions

  and remove unnecessary TODO comments in several files.

2020-10-12  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  glib/glibmm.h: Describe how to use glibmm with meson

2020-10-01  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Meson build: Fix versioning on macOS for libglibmm_generate_extra_defs

2020-09-30  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Meson build: Fix versioning on macOS

  See https://github.com/libsigcplusplus/libsigcplusplus/pull/65

2020-09-13  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Meson build: Add missing Glib::Value and Variant documentation

  The value_basictypes.h and variant_basictypes.h files, which are generated
  from .m4 files, were not included in the input to Doxygen.

2020-09-07  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Remove Glib::BalancedTree

  Use std::map or std::unordered_map instead.

2020-08-31  Chun-wei Fan  <fanchunwei@src.gnome.org>

  class_interface.m4: Export the generated private class

  As in the case of class_shared.m4, we need to do the same for
  class_interface.m4 as well, in order to export the items in the private
  headers fully.

2020-08-29  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gmmproc: Make h2def.py recognize more macros

  When parsing function declarations, remove G_DECLARE_DERIVABLE_TYPE
  and GDK_DECLARE_INTERNAL_TYPE.

2020-08-28  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/glibmm/private/*.h: Decorate the classes with GLIBMM_API

  This is done for completeness' sake, as we are doing for the private headers that we
  generate.

2020-08-28  Chun-wei Fan  <fanchunwei@src.gnome.org>

  class_shared.m4: Decorate private class prototype

  ...when using _WRAP_GOBJECT with a function decoration.  This will help expose
  the class definition in the generated private/*_p.h in the built DLLs/LIBs that
  is built with Visual Studio or clang-cl.

2020-08-12  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Rewrite Gio::Tls[Client,Server]ConnectionImpl

  TlsConnection_Class::wrap_new() can wrap a C object in a TlsConnection,
  TlsClientConnectionImpl or TlsServerConnectionImpl depending on which
  interface, if any, the C object implements.
  
  No need for special wrap*() functions in Tls[Client,Server]Connection
  or SocketClient::signal_event().
  
  This is similar to Gdk::DeviceWithPad.

2020-08-02  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::Tls[Client,Server]ConnectionImpl: Improve the wrap*() functions

  Make Glib::wrap_tls_[client,server]_connection_impl() do like other
  wrap() functions for ref-counted objects when they are given a nullptr:
  return an empty RefPtr.

2020-07-31  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::SocketClient::signal_event(): Fix wrapping of 'connection' param

  The GIOStream* parameter in the 'event' signal can point to either a
  GSocketConnection or to a subclass of GTlsConnection that implements
  the GTlsClientConnection interface. If it implements the
  GTlsClientConnection interface, wrap it in a Gio::TlsClientConnectionImpl.
  Then a signal handler can do:
    auto tls_client_connection =
      std::dynamic_pointer_cast<Gio::TlsClientConnection>(connection);
  
  Fixes #73

2020-07-31  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::IOChannel docs: Update names of some enum values

2020-07-30  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio: Add Tls[Client,Server]ConnectionImpl

  Restructure Tls[Client,Server]Connection. They are interfaces. Now they
  derive only from Glib::Interface, like all interfaces shall do.
  
  Tls[Client,Server]ConnectionImpl don't correspond to C classes. They can
  wrap any C object that derives from GTlsConnection and implements
  GTls[Client,Server]Connection. Such C classes in GLib are not public.
  They can't be wrapped in the usual way.

2020-07-23  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Use Meson-style DLL and .lib naming if requested

  To make things more consistent and less prone to confusion, if 'USE_MESON_LIBS'
  is specified in the NMake command line, build the DLLs and .lib's that are
  named like the Meson counterparts.  Binaries built with Meson+Visual Studio
  and the ones that are built via NMake using 'USE_MESON_LIBS' are
  interchangeable, provided that they are built with the same Visual Studio
  version.

2020-07-22  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Fix generating [glib|gio]mm[config.h|.rc]

  This fixes the build process so that we won't need to generate them
  unnecessarily (i.e. when building from a release tarball built with autotools).
  
  Also streamline the build process that we no longer need to explicitly run
  the 'prep-git-build' target before building, where we generate
  [glib|gio]mm[config.h|.rc], and if needed, gmmproc and generate_wrap_init.pl,
  as part of the normal 'all' target if necessary

2020-07-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::MenuModel: Make MenuAttribute and MenuLink enum class

  Change enum Gio::MenuAttribute to Gio::MenuModel::Attribute and
  change enum Gio::MenuLink to Gio::MenuModel::Link.
  Add new enum values to Attribute.

2020-07-18  Andreas Persson  <andreasp56@outlook.com>

  Update documentation for ListStore too.

2020-07-18  Andreas Persson  <andreasp56@outlook.com>

  Make ListStore accept Interfaces.

  I noticed that I couldn't create a ListStore containing AppInfo objects,
  because an AppInfo is not an Object but an Interface. ListStore seems to
  work fine with Interfaces, so I just changed the static_assert.

2020-07-14  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Support ARM64 Windows builds

  This will make the NMake Makefiles capable of building ARM64 binaries of glibmm
  and giomm, which can be used on Windows 10 on ARM systems.

2020-07-11  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gmmproc: _CLASS_BOXEDTYPE, _CLASS_OPAQUE_COPYABLE: Fix move assignment

  Add a std::move() to avoid copying.
  Fixes #76

2020-06-29  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  docs/reference/: Update for Doxygen >= 1.8.16

  * docs/reference/meson.build: Doxygen 1.8.16 and later does not store
  tag file names in the html files. This requires changes in meson.build
  and in doc-install.pl (in mm-common). Otherwise references to other modules
  won't be updated in the html files when they are installed.
  * docs/reference/Doxyfile.in: Remove PERL_PATH and MSCGEN_PATH.
  Doxygen since version 1.8.0 does not use them.

2020-06-18  Chun-wei Fan  <fanchunwei@src.gnome.org>

  Meson/Visual Studio builds: Include toolset version by default

  This makes the built DLL and .lib's contain the toolset version if the build is
  carried out using Visual Studio 2017 or later, unless the
  'msvc14x-parallel-installable' option is set to be false during configuration.
  
  The reasoning behind this change is that there are subtle problems when, for
  instance, one tries to link to a Visual Studio 2017-built glibmm when building
  gtkmm and libxml++ with Visual Studio 2019.  This is unfortunate as
  Microsoft did try hard to make interoperating between binaries built with
  Visual Studio 2015, 2017 and 2019 as easy as possible in terms of ABI and API,
  but unfortunately this hits the corner cases where this compatibility does not
  work.
  
  As the name suggests, this attempts to make Visual Studio 2017 and 2019
  builds share a single set of underlying C DLLs easier, while avoiding breakages
  caused by such subtle differences.

2020-06-16  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Clean up building tests and examples

  Instead of hand-written rules, just make use of what we have to generate the
  rules on the fly for most of the tests and examples, since the rules are more
  or less the same for each of the test and example programs.  We only need to
  single-out the ones that aren't buildable under Windows and those that have
  multiple programs under each directory, as opposed to one example/test program
  per directory.
  
  Even for those directories that have multiple example programs, we can pretty
  easily generate the rules for them.
  
  Also remove repeated parts that were added by accident.
  
  This can shrink the NMake Makefiles by a bit.

2020-06-16  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Use Toolset version in DLL names by default

  This updates the build to use the toolset version in the final DLL
  and .lib filenames, similar to what is done in Boost, instead of
  the Visual Studio version.
  
  This means that by default, we will use 'vc141' instead of 'vc150'
  in Visual Studio 2017 builds, and 'vc142' instead of 'vc160' in
  Visual Studio 2019 builds.
  
  If using the former naming is desired, use 'USE_COMPAT_LIBS=1' in
  the NMake command line, albeit all such binaries will now be named
  with 'vc150' in the DLL and library bames

2020-06-15  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/glibmm/ustring.h: Fix Visual Studio macro check

  Commit 8b8af81f accidentally changed the macro check from '_MSC_VER' to
  'MSC_VER', fix that.  It probably does not matter since Visual Studio 2017
  is required, where 'GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS' is enabled,
  but fix that for consistency's sake.

2020-06-03  Daniel Boles  <dboles@src.gnome.org>

  propertyproxy_base: Fix using notify w/o prop name

  GLib has now specified that if you want to connect to a signal without a
  detail argument, you omit the `::`. So, glibmm users previously
  connecting to `notify::` to listen for changes to all properties broke.
  Fix that by only passing `notify` i.e. no superfluous `::` in that case.
  
  Close https://gitlab.gnome.org/GNOME/glibmm/-/issues/74
  Close https://gitlab.gnome.org/GNOME/glibmm/-/merge_requests/35

2020-06-02  Daniel Boles  <dboles@src.gnome.org>

  ustring: Silence warning if MSC_VER is undefined/0

2020-05-21  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  tools/defs_gen/*.py: Specify that this is python3 code

  Specify #!/usr/bin/env python3, making it unnecessary to have a python
  command which is a link to python3.
  In h2def.py, use the built-in set() instead of Set() from the sets module.

2020-04-11  Chun-wei Fan  <fanchunwei@src.gnome.org>

  tools/m4/compare.m4: Allow decorating comparison operators

  This allows one to pass in deocrations for the comparison operators so
  that those decorations may be defined as compiler directives to export
  symbols in a more fine-grained manner.

2020-04-05  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Meson build: Set default value of the 'warnings' option to 'min'

  * meson.build: Use dist-warnings when a tarball is tested by
  'ninja dist' or 'meson dist'. Check if generate-binding.py exists, if not
  maintainer-mode. Add a better error message if mm-common-get is required
  but not found.
  * meson_options.txt: Set default value of the 'warnings' to 'min'.
  Add 'dist-warnings' with default value 'fatal'.

2020-04-04  Chun-wei Fan  <fanchunwei@src.gnome.org>

  gio/src/*.hg: Mark all _WRAP_ENUM() with decl_prefix

  As per Kjell's suggestions, make things more future-proof by marking all
  _WRAP_ENUM()'s with 'decl_prefix GIOMM_API'.

2020-04-04  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/src/*.hg: Mark all _WRAP_ENUM() with decl_prefix

  As per Kjell's suggestions, make things more future-proof by marking all
  _WRAP_ENUM()'s with 'decl_prefix GLIBMM_API'.

2020-04-04  Chun-wei Fan  <fanchunwei@src.gnome.org>

  gio/src/*.hg: Mark _WRAP_ENUM with decl_prefix GIOMM_API

  This way, we can mark the template<> classes with GIOMM_API so that we
  can export them as well using compiler directives.  Note that those
  marked with NO_GTYPE do not need to be marked with this, as no
  template<> classes are generated with these.

2020-04-04  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/src/*.hg: Mark _WRAP_ENUM with decl_prefix GLIBMM_API

  This way we can mark the template<> classes that is generated via
  _WRAP_ENUM with GLIBMM_API, so that we can export those as well.
  
  Note that for this, the _WRAP_ENUM calls with NO_GTYPE specified do not
  need to be marked with decl_prefix GLIBMM_API as no template<> classes
  will be generated in this manner.

2020-04-04  Chun-wei Fan  <fanchunwei@src.gnome.org>

  tools/[gerror|enum].m4: Make template<> classes exportable

  Allow to apply the decl_prefix argument onto the template<> classes that
  we generate for the _WRAP_GERROR and _WRAP_ENUM directives in the
  various *.hg files, if specified.
  
  Please note that this is done in GNU m4 style for enum.m4 since we are
  using the 10th argument.

2020-03-22  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  2.65.3

2020-03-20  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  tests/glibmm_buildfilename: Add some tests

  See issue #71

2020-03-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Meson build: Install generate_extra_defs.h

  Fixes #70

2020-03-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  README: Fix a misspelling

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

  2.65.2

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

  Glib, Gio: Add missing #includes

  Fixes #69

2020-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  NEWS: Remove an erroneous item

2020-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  2.65.1

2020-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Change the ABI to glibmm-2.66

  So we can use the 2.64 version numbers for stable releases in the
  glibmm-2.4 ABI series.
  We don't need to release a stable ABI-parallel glibmm until we need
  to release gtkmm 4.0, and that won't happen until GTK 4.0.0 happens.
  
  We've done similar ABI name changes several times before.

2020-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  glib/glibmm-uninstalled.pc.in: Require sigc++-3.0

2020-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib, Gio: Regenerate docs.xml and .defs files

2020-03-14  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  README: Describe building with Meson and Autotools

2020-03-12  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::DBus::Message::get_unix_fd_list(): Add refreturn

  Fixes #68

2020-03-12  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glibmm/objectbase.h: Mark _gobject_cppinstance_already_deleted()

  ...with GLIBMM_API.  This is needed for building gtkmm, with Visual
  Studio.

2020-03-11  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Fix builds from Meson tarball

  For the glib/src/*.[c|h].m4 sources, look also for the generated sources
  that are in untracked/glib/glibmm, so that we do not needlessly try to
  generate that file, meaning m4 will be required even in release tarballs.
  
  Somehow this did not make it into master but is in glibmm-2-62... :|

2020-03-10  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/glibmmconfig.h.[in|meson]: Clean up MSVC bits

  From
  https://gitlab.gnome.org/GNOME/glibmm/-/merge_requests/29#note_734668,
  it was noted by Kjell that we will always have thread_local, so there is
  really no GLIBMM_CAN_USE_THREAD_LOCAL in the code, so we can drop that.
  
  Also drop the Visual Studio 2013 compatibility bits, since we need
  Visual Studio 2017 to build glibmm master (C++17 branch), so they won't
  be relevant.

2020-03-09  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  examples, tests: Disable deprecated API when building with Meson

  Deprecated GLIBMM and GIOMM API are disabled when example programs and test
  programs are built with Autotools. Do the same when building with Meson.

2020-03-09  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Fix 'install' for Meson tarballs

  We need to look for headers from untracked/ as well.

2020-03-09  Chun-wei Fan  <fanchunwei@src.gnome.org>

  m4: Apply function decoration more thoroughly

  Apparently more items in the generated code must be marked with the
  function decoration that is specified, otherwise the exported symbols
  will not be complete.

2020-03-09  Chun-wei Fan  <fanchunwei@src.gnome.org>

  meson: Do not allow static MSVC-style builds

  The Visual Studio build files never really supported static builds, so
  disallow that for now, until we can make sure that is tested better.

2020-03-09  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glibmm: Update glibmmconfig.h.[in|meson] for MSVC

  Visual Studio 2015 or later has thread_local, so make sure that it is
  enabled.
  
  Also update for Visual Studio 2017+ as the compiler does allow static
  members to be initialized inline to std::string::npos
  (GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS), but use a work
  around for pre-Visual Studio 2015 so that we do not get a linker error
  as GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS is not supported.

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  build: Drop gendef

  We are now building glibmm without the use of gendef for all builds, so
  we can now drop gendef from the glibmm sources.

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  Visual Studio builds: build giomm without gendef

  Make sure that we are defining GIOMM_API as __declspec(dllexport) when
  building giomm and so stop the use of gendef.exe.  We are now ready to
  drop gendef from the glibmm sources.

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  gio/giomm/*.h: Mark classes and functions with GIOMM_API

  This prepares the build to use compiler directives to export symbols, in
  our bid to drop gendef.exe.

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  gio/src/*.hg: Mark classes and functions with GIOMM_API

  This prepares the build to export symbols using compiler directives, in
  our bid to drop gendef.exe.  We will also mark pre-declarations of usage
  of glibmm class items with GLIBMM_API as well.

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  build: Do not use gendef.exe for glibmm

  Clean up the build files a bit and update the glibmmconfig.h.[in|meson] so that
  we use __declspec(dllexport) when GLIBMM_BUILD is defined (i.e. during the
  build of glibmm) on Visual Studio.
  
  Also, for the meson builds, disable warnings 4251 and 4275 as they all relate
  to building DLLs regarding symbol export, which is harmless as we know clearly
  that we are indeed building DLLs in our case, and we have already set
  GLIBMM_API appropriately

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/src: Decorate classes and methods with GLIBMM_API

  This prepares for us to export symbols using compiler directives, so that we
  can eventually retire gendef.exe.  This also makes the scripts place GLIBMM_API
  as appropriate for the generated Glib:Error classes and the wrap() method.

2020-03-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  tools: Allow generating Glib:Error class with decorations

  This allows one to export the generated Glib::Error class with decorations so
  that one may be able to use this to export it using compiler directives.
  
  This allows specifications that start with decl_prefix, and this also
  decorates the `friend wrap_init() method in the generated Glib::Error class

2020-03-05  Pavlo Solntsev  <p.sun.fun@gmail.com>

  CI: Initial setup for CI

2020-03-05  Chun-wei Fan  <fanchunwei@src.gnome.org>

  tools/m4: Allow one to decorate the generated wrap() prototype

  This allows the compiler to use the decoration macro to export those methods
  from the generated items

2020-03-05  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/glibmm/*.h: Mark classes and methods with GLIBMM_API

  This prepares the code to use __declspec(dllexport) to export all symbols, so
  that we can eventually bid farewell to gendf.exe

2020-03-05  Chun-wei Fan  <fanchunwei@src.gnome.org>

  meson: Use /utf-8 for Visual Studio builds

  This way, we can avoid warning/error C4819 when building glibmm due to unicode
  handling issues in the compiler, which is likely to pop up on East Asian
  locales on Windows.
  
  We need to ignore warning C4828 when building gendef.exe though with this.

2020-03-04  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Activate the glibmm_ustring_compose test

  It was (probably by mistake) disabled by commit
  729b1ae95d5d05b78741eeef1d635f95b19d790b

2020-03-03  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gio/giomm/meson.build: Silence a warning from Meson

  static_library() can't take a version: argument.

2020-03-03  Chun-wei Fan  <fanchunwei@src.gnome.org>

  MSVC NMake: Allow builds from Meson-generated tarballs

  This adds rules to the NMake Makefiles so that they can find the sources under
  $(srcroot)/untracked, and thus will not need to re-generate the sources.
  
  However, for builds from such tarballs, it is necessary to do
  'nmake /f Makefile.vc CFG=$(CFG) prep-git-build' so that the resource scripts
  and config headers are generated, prior to performing the build.
  
  Please note that glibmm_generate_extra_defs-2.x is now built as a DLL with the
  NMake Makefiles as well.

2020-03-02  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  meson.build: Tidy up a bit

  The definitions of glibmm_build_dep, giomm_build_dep, glibmm_requires and
  giomm_requires can be simplified.

2020-03-02  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Meson build: Add some dependencies when generating source files

  wrap_init.cc shall be rebuilt when generate_wrap_init.pl has been rebuilt.
  Generated .h and .cc files shall be rebuilt when gmmproc has been rebuilt.

2020-03-02  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Makefile.am: Distribute files necessary for building with Meson

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  tools: Fix 'meson dist'

  The former method of using gendef.exe to generate the import library for
  glibmm_generate_extra_defs somehow breaks 'meson dist' and builds from
  release tarballs, unless one builds giomm first.
  
  Fix this by using the __declspec(dll[ex|im]port) directives, since
  glibmm_generate_extra_defs is a simple utility library.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  meson: Build items in tools/extra_defs_gen on MSVC too

  Ensure we can generate the import lib for glibmm_generate_extra_defs on
  Visual Studio builds by using the same technique we used for glibmm and
  giomm, and build the two programs that is to be built along side with
  it.
  
  Also re-order the items in meson.build a bit so that we are able to use
  our gendef tool.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  examples/thread/dispatcher.cc: Make C++17 compliant

  std::mem_fun() and std::unary() have been removed from C++17, so port
  away from using these.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glibmm_interface_move test: Avoid warnings in test_IFace_get_type()

  ...for Visual Studio builds, since we don't really get unused function
  warnings from the TEST_IFACE items.  Plus, we don't have glib autoptr
  support in Visual Studio builds, either.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  examples: Don't build child_watch and iochannel_stream on Windows

  These use *nix items in the code, so they won't build nor run for
  Windows unless they are ported.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  dbusconnection.ccg: Include giomm/unixfdlist.h on *NIX only

  In Meson builds, we don't even generate giomm/unixfdlist.h unless we are
  building for *nix, and we aren't using the items there on non-*nix
  builds.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  gio/giomm/meson.build: Use giomm-int rule for all builds

  Like the previous commit, let builds from release tarballs and GIT
  checkouts build the giomm-int static library, and link the final
  .so/.dll from the objects that form giomm-int static .lib.  By doing so
  we can build giomm with the import libraries for Visual Studio builds
  with gendef, as well as linking in the version resource for all Windows
  builds.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  glib/glibmm/meson.build: Use glibmm-int rule for all builds

  Let builds from release tarballs and GIT checkouts build the glibmm-int
  static library, and link the final .so/.dll from the objects that form
  glibmm-int static .lib.  By doing so we can build glibmm with the import
  libraries for Visual Studio builds with gendef, as well as linking in
  the version resource for all Windows builds.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  meson.build: Disable warning C4589 on Visual Studio

  This warning can be ignored as well.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  tools: Use POSIX-style path for m4 in gmmproc

  Otherwise the script gets confused as the slashes were not escaped

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  meson.build: Allow Visual Studio builds in GIT checkouts

  It is now possible to build glibmm directly from GIT checkouts as long
  as there is a working m4 executable (such as fomr Cygwin or MSYS64), so
  we can allow builds directly from GIT checkouts.

2020-03-02  Chun-wei Fan  <fanchunwei@src.gnome.org>

  meson.build: Always look for libsigc++ via pkg-config

  We have Meson build support for libsigc++ before we got into this drive
  for Meson support for building glibmm, so let's just always look for
  libsigc++ with pkg-config.

2020-03-01  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Add support for building glibmm with Meson

  glibmm can be built with either Autotools or Meson.
  
  See MR !27

2020-03-01  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Prepare existing files for building with Meson

  * examples/network/resolver.cc: Don't include config.h. It's not used.
  * glib/glibmm/ustring.cc: Check if GLIBMM_SIZEOF_WCHAR_T is defined.
  * tools/generate_wrap_init.pl.in:
  * tools/gmmproc.in: Change '\@' to '\ @'. Meson's configure_file()
  removes a backslash immediately before an at-sign.

2020-02-27  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Fix headers installation

  Fix Copy-n-paste error...

2020-02-27  Chun-wei Fan  <fanchunwei@src.gnome.org>

  generate-msvc.mak: Correct path to find gmmproc PERL modules

  The GLIBMM_MODULE_NAME should be glibmm-2.x, not giomm-2.x

2020-02-26  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Add targets to ease build from GIT checkouts

  This will enable one to generate the following files:
  
  MSVC_NMake/glibmm/glibmmconfig.h
  MSVC_NMake/glibmm/glibmm.rc
  MSVC_NMake/giomm/giommconfig.h
  MSVC_NMake/giomm/giomm.rc
  
  when building from a GIT checkout.
  
  This will also enable one to generate the following files:
  tools/gmmproc
  tools/generate_wrap_init.pl
  
  from a GIT checkout or from a source tree unpacked from a release tarball so
  that one can use these to build directly from a GIT checkout using NMake,
  or to have gmmproc and generate_wrap_init.pl ready to use to build other
  -mm libraries.

2020-02-26  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: "Install" gmmproc items

  ...so that one may be able to use these in the future for other -mm packages.
  
  Also update the header installation as they could have been generated during
  the build.  Update README.win32 to indicate building from a GIT checkout is
  better supported, and how one may carry this build out.

2020-02-26  Chun-wei Fan  <fanchunwei@src.gnome.org>

  MSVC_NMake: Add rules to generate and build sources

  ...from a GIT checkout, from the various .ccg/.hg and the *.[cc|h].m4 sources,
  as well as the wrap_init.cc sources.  This will obviously require PERL, as well
  as a Cygwin or MSYS installation that has a working m4 executable for Windows
  for this to work.  Note that release tarballs continue to build on Visual
  Studio as they did before, without the need for PERL nor m4.
  
  Note that this does not yet support generating [glib|gio]mmconfig.h nor
  [glib|gio]mm.rc from their .in counterparts, as well as tools\gmmproc
  and tools\generate_wrap_init.pl, which will be done in a later commit.

2020-02-26  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: build glibmm_generate_extra_defs-2.xx.lib

  Since this is entirely buildable by Visual Studio, build it as well and see
  whether we can use this to allow builds from GIT checkouts for other -mm
  libraries with MSVC builds.
  
  Copy this .lib and its header upon 'install'.

2020-02-07  Chun-wei Fan  <fanchunwei@src.gnome.org>

  MSVC_NMake/config-msvc.mak: Correct libsigc++ libname

  libsigc++'s Meson build files have been corrected to produce
  sigc-3.0.lib like the autotools builds, so make sure we link to the
  correct .lib file.

2020-01-05  Daniel Boles  <dboles.src@gmail.com>

  Variant: Avoid . to not split an intro doc comment

  Doxygen interprets the first . to mean the end of the introductory
  blurb, so that resulted in this sentence suddenly ending after the "i."
  in "i.e." in the short version and having a line break there in the long

2019-12-27  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Split outdir by toolset version

  This reduces the likelihood of accidently mixing binaries linked to
  different CRT versions within a single build tree.
  
  Also, fix up building the tests as new tests were added along the way.

2019-12-26  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake Makefiles: Use /utf-8 where available

  This avoids miscompilations and errors when building under certain
  locales (Chinese, Korean and Japanese in particular) as the compiler
  could not handle Unicode sequences properly without this flag.

2019-12-26  Chun-wei Fan  <fanchunwei@src.gnome.org>

  NMake MAkefiles: Add USE_MESON_LIBS

  This allows one to use C++ dependencies built using Meson in an easier
  way, as applicable.

2019-12-20  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::AsyncResult: Improve the class description

  Fixes #27

2019-12-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Binding: Keep a binding alive even without a RefPtr

  A binding between properties can remain even after all RefPtr<Binding>s
  are gone. This is similar to how Gtk::Widget::set_controller() works
  in gtkmm4.
  
  Fixes #62, see !21

2019-12-14  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Derive Glib::Error from std::exception, remove Glib::Exception

  Glib::Error::what() returns const char* (was Glib::ustring). It overrides
  std::exception::what() that returns const char* and is noexcept.
  Fixes #23

2019-11-30  Thomas Holder  <thomas.holder@schrodinger.com>

  Use Glib::UStringView with Glib::ustring::compare()

  and with the comparison operators, operator==(), etc.
  Add the glibmm_ustring_compare test case.
  
  https://gitlab.gnome.org/GNOME/glibmm/issues/64
  https://gitlab.gnome.org/GNOME/glibmm/issues/65

2019-11-24  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  SettingsSchemaSource: Wrap new_from_directory()

  https://bugzilla.gnome.org/show_bug.cgi?id=783216
  Fix https://gitlab.gnome.org/GNOME/glibmm/issues/19
  Close https://gitlab.gnome.org/GNOME/glibmm/merge_requests/20

2019-11-24  Daniel Boles  <dboles.src@gmail.com>

  SettingsSchemaSource: Implement list_schemas()

  https://bugzilla.gnome.org/show_bug.cgi?id=783216
  https://gitlab.gnome.org/GNOME/glibmm/issues/19
  https://gitlab.gnome.org/GNOME/glibmm/merge_requests/20

2019-11-21  Thomas Holder  <thomas.holder@schrodinger.com>

  Glib::Regex: Use UStringView

  Fixes #66

2019-11-20  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib: Replace StringView with StdStringView and UStringView

  StdStringView and UStringView force users to be explicit (by using c_str())
  when using a std::string where a Glib::ustring is recommended or vice versa.
  See issue #64

2019-11-18  Pavlo Solntsev  <p.sun.fun@gmail.com>

  Update value_custom.h

2019-11-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Avoid unnecessary conversions between std::string and Glib::ustring

  A few implicit conversions in tests/ have been kept. They are probably
  deliberate, to test implicit conversion. Inspired by issue #65

2019-11-17  Pavlo Solntsev  <p.sun.fun@gmail.com>

  Glib: Adding static check for template parameter

  To meet requirements for the passed type, compile
  type check for the passed type was added.

2019-11-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Binding: get_source() and get_target() return ObjectBase*

  Fixes #63

2019-11-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Binding: Explain why SlotTransform takes GValue*

  Fixes #61

2019-11-14  Thomas Holder  <thomas.holder@schrodinger.com>

  fix ustring::insert(iterator, In, In)

2019-11-09  Daniel Boles  <dboles.src@gmail.com>

  tests/glibmm_binding: Add basic test inc transform

  A basic test is better than nothing, and I just changed how the
  transform function works and want to be confident it still does.

2019-11-09  Daniel Boles  <dboles.src@gmail.com>

  Binding: Use std::optional instead of out-ref+bool

  The pattern of returning a boolean to indicate whether an output
  reference was set is messy and error-prone. C++17 adds std::optional,
  which exists precisely to indicate that a result is available or not.

2019-11-09  Daniel Boles  <dboles.src@gmail.com>

  Binding: no point to set target value if got false

  If we return false, GBinding ignores target GValue, so there’s no point
  setting it. Besides, if the transform function returned false, that says
  they couldn't calculate a target value, so they shouldn’t assign to `to`
  
  I default-construct primitive `T_to`s in case anyone *was* reading those
  for some daft reason, so they get a zero-initialised value instead of UB

2019-11-09  Daniel Boles  <dboles.src@gmail.com>

  Binding: Move SlotTypeTransform up and document it

  This is more maintainable than all the arguments to all the overloads of
  bind_property() manually repeating the signature in their documentation,
  plus more user-friendly as we document it, users can use the typedef, &c
  
  Note: My next thought was we can just take SlotTypeTransforms in the
  argument list, instead of totally arbitrary functors, so the conversion
  would be done at call site instead of via extra code in the body. But I
  didn't get that working yet, and it should be a separate commit anyway.

2019-11-09  Daniel Boles  <dboles.src@gmail.com>

  Binding: Better explain purpose of SlotTransform,

  and use better formatting for it too.

2019-11-09  Daniel Boles  <dboles@src.gnome.org>

  Binding: Fix using outdated enums in documentation

  They are not Glib::BINDING_* anymore, but rather Glib::Binding::Flags::*

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

  Glib::ustring_Iterator: Explicitly declare copy assignment

  This disables a warning from g++ 9.2 (abbreviated here):
  
  In member function ‘bool Glib::ustring::validate(Glib::ustring::iterator&)’:
  error: implicitly-declared ..... is deprecated [-Werror=deprecated-copy]
   1206 |   first_invalid = iterator(string_.begin() + (valid_end - pdata));
  note: because ..... has user-provided .....
    972 | inline ustring_Iterator<T>::ustring_Iterator(
          const ustring_Iterator<std::string::iterator>& other)

2019-10-23  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Add Glib::canonicalize_filename()

  Fixes #59

2019-10-23  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib: Replace BasicStringView with non-template StringView

  A call to path_get_dirname(StdStringView filename) with a Glib::ustring
  fails if StdStringView does not have a constructor that takes a
  const Glib::ustring&. StdStringView and UStringView are now aliases of
  StringView, whose names show which data type is preferred.
  See issue #34

2019-10-23  Mike Fleetwood  <mike.fleetwood@googlemail.com>

  Correct spelling of spawn_async_with_pipes() in doc comment

2019-10-23  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib: Add BasicStringView, StdStringView, UStringView

  and use them in build_filename() and other functions in miscutils.hg.
  
  Fixes #34

2019-10-22  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::DBus::Connection: Make the wrap() function thread-safe

  Add a std::mutex that guarantees that two threads don't create C++
  wrappers for the same GDBusConnection instance.
  
  Fixes #56

2019-10-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  glib/src/miscutil.hg: Remove obsolete descriptions

  These should have been removed when Glib::ArrayHandle was replaced
  by std::vector.

2019-10-07  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::MainContext: Add push/pop/get_thread_default()

  See issue #56

2019-10-07  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::get_host_name(): Return a Glib::ustring

  g_get_host_name() returns a UTF-8 string.

2019-10-07  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  NEWS: Add a missing issue number

2019-09-23  scx  <scx.mail@gmail.com>

  Add Glib::get_host_name()

  Wraps g_get_host_name() from glib.
  Return a name for the machine.
  
  Closes GNOME/glibmm#58

2019-09-22  scx  <scx.mail@gmail.com>

  Add Glib::get_user_runtime_dir()

  Wraps g_get_user_runtime_dir() from glib.
  Returns a directory that is unique to the current user on the local system.
  
  Closes GNOME/glibmm#57

2019-09-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  2.63.1

2019-09-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Change the ABI to glibmm-2.64

  So we can use the 2.62 version numbers for stable releases in the
  glibmm-2.4 ABI series.
  We don't need to release a stable ABI-parallel glibmm until we need
  to release gtkmm 4.0, and that won't happen until GTK 4.0.0 happens.
  
  We've done similar ABI name changes several times before.

2019-09-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::DBus::Introspection: Add a necessary #include

2019-09-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::ustring documentation: Minor fix

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

  Gio::SocketControlMessage: Add add_deserialize_func()

  The deserialize vfunc in GLib is a class virtual function (not associated
  with an instance). Such functions don't exist in C++. But it must be wrapped
  in one way or another. g_socket_control_message_deserialize() assumes that
  all subclasses of GSocketControlMessage override this vfunc. A user-program
  can crash, if any subclass does not. Fixes #52

2019-08-13  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Remove Glib::TimeVal

  GTimeVal has been deprecated in glib. Remove its wrapping in glibmm.
  
  * examples/dbus/server_without_bus.cc:
  * examples/dbus/session_bus_service.cc: Replace TimeVal by DateTime.
  * gio/src/fileinfo.[ccg|hg]: Remove [set_]modification_time().
  Add set/get_modification_date_time().
  * glib/glibmm.h:
  * glib/glibmm/filelist.am: Remove timeval.
  * glib/glibmm/timeval.[cc|h]: Removed files.
  * glib/src/date.[ccg|hg]: Remove set_time(const GTimeVal& timeval).
  * glib/src/datetime.[ccg|hg]: Remove create_now_local/utc(const TimeVal& tv)
  and to_timeval(). Add create_from_iso8601(), format_iso8601() and
  operator bool().
  * tools/m4/convert_glib.m4:
  * tools/m4/convert_gio.m4: Remove conversions for GTimeVal.

2019-08-13  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib, Gio: Regenerate docs.xml and .defs files

2019-07-21  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio: Fix ownership of some lists and arrays

  * gio/src/drive.hg: get_volumes(): Glib::OWNERSHIP_SHALLOW -> DEEP
  * gio/src/mountoperation.hg: signal_ask_question(): DEEP -> NONE
  A signal handler shall not deallocate its input data.
  * gio/src/themedicon.hg: get_names(): DEEP -> NONE
  * gio/src/tlsdatabase.[ccg|hg]: lookup_certificates_issued_by[_finish]_vfunc():
  g_list_copy() -> g_list_copy_deep()
  * gio/src/volumemonitor.hg: get_connected_drives(), get_volumes(),
  get_mounts(): SHALLOW -> DEEP

2019-07-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Add Gio::DBus::ObjectManager*

  Add Gio::DBus::ObjectManager, Gio::DBus::ObjectManagerClient and
  Gio::DBus::ObjectManagerServer. Fixes #43

2019-07-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::DBus::Object::get_interface_vfunc(): Don't add global symbol

  The previous fix of Gio::DBus::Object vfuncs added a Glib::unwrap_copy()
  overload, which became a global symbol in the load module. Replace it
  with a local name in an anonymous namespace.

2019-07-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Add Gio::DBus::ObjectProxy and Gio::DBus::ObjectSkeleton

  In preparation for adding Gio::DBus::ObjectManager, ObjectManagerClient
  and ObjectManagerServer. See issue #43.

2019-07-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib, Gio: Regenerate docs.xml and .defs files

  and update gio_signals.defs.patch and generate_defs_gio.cc.

2019-07-16  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::DBus::Object: Fix refcounts in some vfuncs

  Gio::DBus::Object::get_interface_vfunc() and get_interfaces_vfunc()
  must add a reference to the returned DBus interfaces. The caller shall
  unref them. g_dbus_object_get_interface() and g_dbus_object_get_interfaces()
  are marked (transfer full).

2019-07-12  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::ustring docs: ustring can't always replace std::string

  Fixes #47

2019-07-09  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::init(), Gio::init(): Improve the documentation

  See issue #49

2019-07-08  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Variant<std::tuple<>>::create(): Fix memory leak

  Fixes #48

2019-07-08  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gmmproc: Update enum.pl and h2def.py for new glib deprecation macros

  * tools/enum.pl:  Don't replace MY_ENUMERATOR = '}' with MY_ENUMERATOR = ']'.
  Remove *_DEPRECATED_TYPE_IN_* and *_DEPRECATED_ENUMERATOR_IN_* when enum
  definitions are parsed.
  * tools/defs_gen/h2def.py: When parsing function declarations:
  Remove G_GNUC_BEGIN_IGNORE_DEPRECATIONS, G_GNUC_END_IGNORE_DEPRECATIONS
  and G_DECLARE_INTERFACE(*). Update the removals of *_DEPRECATED*
  and *_AVAILABLE_IN* so the new *_DEPRECATED_TYPE* and friends won't
  affect the result.

2019-06-27  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Property: Update for compatibility with Gtk::Builder

  When an object is created by GtkBuilder, the GObject-derived C object is
  created and its properties set before there is a C++ wrapper to store
  the property values in. Glib::custom_set_property_callback() stores
  property values in a data structure reached via a GQuark in the object.
  PropertyBase::lookup_property() copies those property values to the
  PropertyBase objects when the C++ wrapper is created.

2019-06-23  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::Application: Add add_option_group()

  Fixes #46

2019-06-21  Daniel Boles  <dboles@src.gnome.org>

  ustring: Add overloads for const char* fmt . . .

  . . . in the hope that doing so can help compilers catch some mistakes
  that users might make. However, point out they shouldn't rely on that.
  We only provide this overload in case it catches such users in the act
  of making a mistake, but they should still be careful when writing code.
  
  details:
   (1) This means we can implement sprintf(ustring const&) in terms of
       ustring(char const*) instead of repeating ourselves.
   (2) I provide a 2nd overload of the zero-args case just for symmetry,
       and to avoid creating another ustring for the argument just to copy
       it on return (if not that I expect this to be performance-critical)
  
  https://gitlab.gnome.org/GNOME/glibmm/issues/21#note_537941

2019-06-21  Daniel Boles  <dboles@src.gnome.org>

  ustring: Be extra clear about "count/types/order"

  Say the same thing both in the main blurb and the argument documentation
  – and say "count" instead of "number" just so it's extra clear what I
  mean (and because "size" didn't seem clear enough in that sense).

2019-06-21  Daniel Boles  <dboles@src.gnome.org>

  ustring: Don't say "message string" for sprintf()

  I just copied that from compose() and am not sure of its precise
  intended meaning, but in case it conveys 'a string suitable for showing
  a message, i.e. a translatable string', let's not give that incorrect
  impression, since placeholders can't be reordered by translators. See
  also https://gitlab.gnome.org/GNOME/glibmm/issues/21#note_533829 et al.

2019-06-21  Daniel Boles  <dboles@src.gnome.org>

  ustring: Fix warning/errors if sprintf("fmt only")

  If no args to be substituted are given, there is nothing to do, so the
  fmt string is returned as-is without substitution. This is an obvious
  case of mismatched format/args that we can check. Not doing so causes
  warnings/errors with common compiler options, as it is a security risk.
  
  For instance, -Wformat-security causes GCC to complain thusly:
  > format not a string literal and no format arguments
  
  Not passing arguments but passing a variable string that might contain
  placeholders and thus instruct the compiler to try grabbing random
  unrelated things off the stacks is obviously not something we want to do
  – nor do we want to do it any *other* time, but this is the one case we
  can obviously catch ourselves, rather than hoping any compiler does.
  
  The argument for not just static_assert()ing that sizeof...(args) >= 1
  is that this might conceivably be used in generic code where doing the
  former would be annoying, and it's easy enough to make that work anyway.
  
  https://gitlab.gnome.org/GNOME/glibmm/issues/21#note_537551

2019-06-20  Daniel Boles  <dboles@src.gnome.org>

  ustring: Add sprintf(), wrapping g_strdup_printf()

  Add another way to produce formatted ustrings, this time using printf
  syntax, by forwarding arguments to g_strdup_printf() and then copying
  the result into the returned ustring.
  
  This includes a private ustring::sprintify() function that by default
  just forward its argument but can be overloaded to do something else.
  In this commit, that is overloaded for ustring and std::string so that
  their .c_str() is passed to printf instead, avoiding the ugliness of
  users always having to write .c_str() in their own lists of arguments.
  
  Note that the same lack of type safety as plagues printf() and all its
  variants (in both C and GLib) applies here: the arguments are just
  forwarded on, so if you include too few or the wrong types for the
  placeholders you specify, you invoke undefined behaviour just as in C.
  
  For reasons like that, C++'s preference of streams over stdio, and the
  hope that we'll eventually get an actual nice string-formatting solution
  in the C++ Standard, I don't go out of my way to shout about this in the
  documentation. Users who really want sprintf() will find it, without us
  having to shout too loudly about it and risk being seen as recommending
  it more than anything else. It's here for those who know they need it.
  
  https://gitlab.gnome.org/GNOME/glibmm/issues/21

2019-06-11  Daniel Boles  <dboles@src.gnome.org>

  Property: Add const get_proxy() returning ReadOnly

  We could only get_proxy() if non-const and with a read/write Proxy. This
  resolves that so that we can get a read-only proxy from a const Property
  (without having to construct manually from the instance/name as before).
  
  Close https://gitlab.gnome.org/GNOME/glibmm/issues/44

2019-06-11  Daniel Boles  <dboles@src.gnome.org>

  Property: Getting Proxy from ReadOnly is const too

  Thereʼs no need for this to require a non-const Property_ReadOnly as the
  Proxy by definition canʼt modify it, so make it const like other methods

2019-06-11  Daniel Boles  <dboles@src.gnome.org>

  Property: Clarify “manipulate” → read and/or write

2019-06-10  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gmmproc: Don't assume that enumerators can't contain lowercase letters

2019-04-26  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Checksum, DateTime, TimeZone: Add #include <glibmm/value.h>

  Should have been done in the previous commit.

2019-04-26  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Checksum, Datetime, TimeZone: _CLASS_BOXEDTYPE

  These classes can be wrapped as _CLASS_BOXEDTYPE. Then Glib::Value
  specializations are generated, and these classes can be more easily used
  with Glib::Value. See discussion on gtkmm-list
  https://mail.gnome.org/archives/gtkmm-list/2019-April/msg00011.html

2019-04-18  Dainis Jonitis  <jonitis@gmail.com>

  Fix callback races in glibmm when source is destructed

  It is normal situation when glib main loop iterates sources on one
  thread where it checks whether source is still active and its callback
  functions can be called and glibmm Source being destroyed on other
  thread. Glibmm should check once again that callback_data and
  callback_funcs fields are still valid and GSource was not marked
  as inactive while its callback handlers are called.
  
  Fixes #41

2019-04-18  Martin Ejdestig  <marejde@gmail.com>

  Use convert_return_gchar_ptr_to_*() in a couple of ustring methods

  First attempt at fixing memory leak in make_valid() (see previous commit)
  used make_unique_ptr_gfree() directly because of looking at these methods.
  Better to use the helper function.
  
  This actually fixes undefined behavior for normalize() since
  g_utf8_normalize() is documented to return NULL if string is not a valid
  UTF-8 string. The constructor for std::string, which ustring uses for
  storage, that takes a pointer is documented to have undefined behavior if
  pointer is NULL. The utility function checks for NULL and uses the default
  constructor in that case. (Have not looked at implementation of Glib
  functions, and it may be that all std::string implementations Glibmm is
  used with handles this case, but good to avoid undefined behavior
  regardless, I think.)

2019-04-18  Martin Ejdestig  <marejde@gmail.com>

  Fix memory leak in Glib::ustring::make_valid()

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

  Doxyfile.in: Remove unused configuration constants

  Should have been done when they were removed from other files in
  the fix of issue #22.

2019-03-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  giomm.h: Add missing #include directives

2019-03-19  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  NEWS: Add requirement glib-2.0 >= 2.59.2

2019-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  2.61.1

2019-03-17  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Change the ABI to glibmm-2.62

  So we can use the 2.60 version numbers for stable releases in the
  glibmm-2.4 ABI series.
  We don't need to release a stable ABI-parallel glibmm until we need
  to release gtkmm 4.0, and that won't happen until GTK 4.0.0 happens.
  
  We've done similar ABI name changes several times before.

2019-03-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Put _WRAP_VFUNC in protected sections

2019-03-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio: Add some API (AppInfo::launch_uris_async() etc.)

  * gio/src/appinfo.hg: Add launch_uris_async() and launch_uris_async().
  * gio/src/asyncresult.hg: _IGNORE g_async_result_legacy_propagate_error().
  * gio/src/datainputstream.hg: _IGNORE deprecated methods.
  * gio/src/dbusconnection.hg: Add get/property_flags().
  * tools/m4/convert_gio.m4: Add conversions for GDBusConnectionFlags.

2019-03-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib: Add some API (DateTime::get_timezone() etc.)

  * glib/src/datetime.[ccg|hg]: Add get_timezone().
  * glib/src/keyfile.hg: Add get_locale_for_key().
  * glib/src/timezone.hg: Add get_identifier().

2019-03-15  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib, Gio: Regenerate .defs and docs.xml files

2019-03-03  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  generate_wrap_init.pl.in: Don't exclude any Gtk classes

  Don't exclude GtkTree, GtkTreeItem or GtkText from generated
  wrap_init.cc files. No such classes have existed for a long time,
  but now there is a new GtkText in gtk4.
  If a class really shall be excluded, insert _NO_WRAP_INIT_REGISTRATION
  in its .hg file.

2019-02-02  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::KeyFile: Make it a _CLASS_OPAQUE_REFCOUNTED

  * examples/keyfile/main.cc:
  * gio/src/desktopappinfo.hg: Store KeyFile in a RefPtr.
  * glib/src/keyfile.[ccg|hg]: Replace _CLASS_GENERIC by _CLASS_OPAQUE_REFCOUNTED.
  Remove handcoded methods that are now generated by gmmproc.
  * tools/m4/convert_glib.m4: Update conversion for KeyFile.
  
  GKeyFile is refcounted since 2009.

2019-01-31  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gmmproc: _WRAP_PROPERTY: Check the data type

  * glib/glibmm/value_custom.h: Add template class
  Glib::Traits::ValueCompatibleWithWrapProperty<> that checks if the template
  parameter names a type that can be used with _WRAP_PROPERTY
  and _WRAP_CHILD_PROPERTY.
  * tools/m4/property.m4:
  * tools/pm/Output.pm:
  * tools/pm/WrapParser.pm: _WRAP_PROPERTY and _WRAP_CHILD_PROPERTY generate
  a static_assert() that checks if the data type is acceptable. The generation
  of the static_assert() can be suppressed with the new no_type_check parameter.

2019-01-30  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib, Gio: Use _IS_REFCOUNTED_BOXEDTYPE where appropriate

  * gio/src/dbusintrospection.hg: Add _IS_REFCOUNTED_BOXEDTYPE to
  Gio::DBus::InterfaceInfo which is used in _WRAP_PROPERTY in Gio::DBus::Proxy.
  * gio/src/settingsschema.hg: Add _IS_REFCOUNTED_BOXEDTYPE. SettingsSchema is
  used in _WRAP_PROPERTY in Gio::Settings.
  * glib/src/bytearray.[ccg|hg]: Replace the hand-coded Value specialization
  with _IS_REFCOUNTED_BOXEDTYPE.

2019-01-30  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  gmmproc: Add _IS_REFCOUNTED_BOXEDTYPE

  * glib/glibmm/value.h: Add Value_RefPtrBoxed<>.
  * tools/m4/class_opaque_refcounted.m4: Add _IS_REFCOUNTED_BOXEDTYPE, which can
  be used together with _CLASS_OPAQUE_REFCOUNTED. It generates a *_get_type()
  function and a Glib::Value specialization. A Glib::Value specialization is
  required, if the C++ class is used in _WRAP_PROPERTY.

2019-01-28  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::UnixSocketAddress: ByteArray is in namespace Glib, not in Gio

2019-01-28  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::TlsClientConnection: Remove property_accepted_cas()

  It does not work because there is no suitable Glib::Value<T> specialization.
  get_accepted_cas() can be used instead.

2019-01-27  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Value: Add Value<std::vector<string>> specializations

  Add Value<std::vector<std::string>> and Value<std::vector<Glib::ustring>>.
  One of them is needed in _WRAP_PROPERTY("names", std::vector<Glib::ustring>)
  in Gio::ThemedIcon and in _WRAP_PROPERTYs in gtkmm.

2019-01-27  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::ThemedIcon: Add create(const std::vector<Glib::ustring>& iconnames)

  And change the type of icon names to Glib::ustring in methods where it
  was std::string. Gtkmm consistently uses Glib::ustring for icon names,
  but Gio::ThemedIcon has been inconsistent. (The string returned by
  Gio::Icon::to_string() is not an icon name. It shall remain a std::string.)

2019-01-25  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Gio::AsyncResult: Explain why wrap() is not used in get_source_object_base()

  * gio/src/asyncresult.ccg: Replace a TODO comment with an explanation.
  * tests/giomm_asyncresult_sourceobject/main.cc: Add code that demonstrates
  why Glib::wrap(GObject* object, bool take_copy) returns an empty RefPtr.

2019-01-20  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Value: Add ValueBase_Variant

  Nice to have as a base class for Value<VariantBase> and possibly for future
  Glib::Value specializations.

2019-01-19  Tapasweni Pathak  <tapasweni.pathak@ril.com>

  Add few installation instructions

2019-01-18  Kjell Ahlstedt  <kjellahlstedt@gmail.com>

  Glib::Value: Remove obsolete create_param_spec() overload

  Glib::Property uses the create_param_spec() method with 4 parameters.
  Remove the one with only a 'name' parameter.

