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 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