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