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

       2.63.1

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

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

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

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

       Glib::ustring documentation: Minor fix

2019-09-02  Kjell Ahlstedt  <[email protected]>

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

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

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

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

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

       Add Gio::DBus::ObjectManager*

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

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

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

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

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

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

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

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

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

       Fixes #47

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

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

       See issue #49

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

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

       Fixes #48

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

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

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

       Gio::Application: Add add_option_group()

       Fixes #46

2019-06-21  Daniel Boles  <[email protected]>

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

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

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

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

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

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

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

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

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

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

2019-04-26  Kjell Ahlstedt  <[email protected]>

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

       Should have been done in the previous commit.

2019-04-26  Kjell Ahlstedt  <[email protected]>

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

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

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

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

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

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

       giomm.h: Add missing #include directives

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

       NEWS: Add requirement glib-2.0 >= 2.59.2