2020-03-17  Kjell Ahlstedt  <[email protected]>

       2.65.1

2020-03-17  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

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

2020-03-17  Kjell Ahlstedt  <[email protected]>

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

2020-03-14  Kjell Ahlstedt  <[email protected]>

       README: Describe building with Meson and Autotools

2020-03-12  Kjell Ahlstedt  <[email protected]>

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

       Fixes #68

2020-03-12  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       NMake Makefiles: Fix 'install' for Meson tarballs

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

2020-03-09  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       Activate the glibmm_ustring_compose test

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

2020-03-03  Kjell Ahlstedt  <[email protected]>

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

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

2020-03-03  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       Makefile.am: Distribute files necessary for building with Meson

2020-03-02  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       meson.build: Disable warning C4589 on Visual Studio

       This warning can be ignored as well.

2020-03-02  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       Add support for building glibmm with Meson

       glibmm can be built with either Autotools or Meson.

       See MR !27

2020-03-01  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       NMake Makefiles: Fix headers installation

       Fix Copy-n-paste error...

2020-02-27  Chun-wei Fan  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       Gio::AsyncResult: Improve the class description

       Fixes #27

2019-12-15  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       Glib::Regex: Use UStringView

       Fixes #66

2019-11-20  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       Update value_custom.h

2019-11-18  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

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

       Fixes #63

2019-11-15  Kjell Ahlstedt  <[email protected]>

       Glib::Binding: Explain why SlotTransform takes GValue*

       Fixes #61

2019-11-14  Thomas Holder  <[email protected]>

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

2019-11-09  Daniel Boles  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       Binding: Better explain purpose of SlotTransform,

       and use better formatting for it too.

2019-11-09  Daniel Boles  <[email protected]>

       Binding: Fix using outdated enums in documentation

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

2019-11-03  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       Add Glib::canonicalize_filename()

       Fixes #59

2019-10-23  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       Correct spelling of spawn_async_with_pipes() in doc comment

2019-10-23  Kjell Ahlstedt  <[email protected]>

       Glib: Add BasicStringView, StdStringView, UStringView

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

       Fixes #34

2019-10-22  Kjell Ahlstedt  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

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

       See issue #56

2019-10-07  Kjell Ahlstedt  <[email protected]>

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

       g_get_host_name() returns a UTF-8 string.

2019-10-07  Kjell Ahlstedt  <[email protected]>

       NEWS: Add a missing issue number

2019-09-23  scx  <[email protected]>

       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  <[email protected]>

       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