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