=============================================================================== Gtk# 2.99.3 - 2014-06-06 =============================================================================== Gtk# 2.99.3 is a beta release of C# bindings for GTK 3.x. This version of Gtk# provides bindings for the API exposed by these libraries: * cairo 1.10.0 * glib 2.28.0 * pango 1.28.3 * atk 1.32.0 * gdk-pixbuf 2.22.1 * gtk+ 3.0.0 There is no API stability guarantee for now, but we try to keep breaking changes to a minimum. This version of Gtk# can be installed in parallel with Gtk# 2.x, and should not have any impact on applications using Gtk# 2.x. New features and enhancements ----------------------------- * Windows installer: this is the first release of a Gtk# Windows installer with GTK+ 3.x. It includes 32-bit native binaries of GTK+ 3.6.4, provided at http://www.gtk.org/download/win32.php * generator: Add support for fixed length arrays as method parameters * build: Add a pkg-config file for gdk-sharp-3.0 * Add samples to show the Spinner widget, and to demonstrate CSS theming Changes ------- * generator: Create a directory for each namespace of generated code * cairo: Remove FormatStrideForWidth and PathExtents methods from Context * glib: Add GVariant to fundamental types and allow conversion to and from GValue Bug fixes --------- * Various fixes to build on Windows with MinGW and the .NET compiler * generator: Fix generation of SetGValue method * generator: Add new keyword to GType property if it hides parent * generator: Fix handle being passed when type is a struct * generator: Fix signature of static method overloads * gtk: Add ListStore.SetValue overload for long type =============================================================================== Gtk# 2.99.2 - 2013-12-04 =============================================================================== Gtk# 2.99.2 is the third beta release of C# bindings for GTK 3.x. This version of Gtk# provides bindings for the API exposed by these libraries: * cairo 1.10.0 * glib 2.28.0 * pango 1.28.3 * atk 1.32.0 * gdk-pixbuf 2.22.1 * gtk+ 3.0.0 There is no API stability guarantee for now, but we try to keep breaking changes to a minimum. This version of Gtk# can be installed in parallel with Gtk# 2.x, and should not have any impact on applications using Gtk# 2.x. New features and enhancements ----------------------------- * Lots of improvements to the code generator, to support GAPI XML converted from GObject Introspection XML (GIR). * generator: Remove redundant class name from method name * generator: Implement attribute to hide method parameters * cairo: Throw ObjectDisposedException when trying to use an object that has been disposed * glib: Add Mutex, RecMutex and Cond types * glib: Add GPollFD and GSource types * glib: Add GDate and GDateTime classes * glib: Map MainContext type and expose members Changes ------- * Move the fixup tool from the parser to the generator folder * generator: Provide a GType static property for adapters and rename existing GType property to GInterfaceGType * gio: Rename ApplicationFlags.FlagsNone to ApplicationFlags.None * gio: Delete unused DBusInterfaceVTable class * gio: Fix up returns type for several GSettings.List* methods * glib: Install properties before class_init finishes * glib: Remove obsolete Argv-related methods in Marshaller * gtk: Fix TreeView.GetTooltipContext method signature (bxc#14678) Bug fixes --------- * generator: Dispose ownable method parameters in VM callback (bxc#237) * generator: Dispose ownable parameters in signal callbacks (bxc#237) * atk: Add metadata fixup to avoid crash due to ABI change * cairo: Fix leaks when managed objects are finalized * glib: Fix copy-paste error in Object.FindClassProperty() * gtk: Fix Application to be more robust when embedding mono * gui-thread-check: Add two more methods to the whitelist =============================================================================== Gtk# 2.99.1 - 2013-09-23 =============================================================================== Gtk# 2.99.1 is the second release of C# bindings for GTK 3.x. This is a beta release, primarily intended for applications developers who want to start porting their application to GTK 3.x. This version of Gtk# provides bindings for the API exposed by these libraries: * cairo 1.10.0 * glib 2.28.0 * pango 1.28.3 * atk 1.32.0 * gdk-pixbuf 2.22.1 * gtk+ 3.0.0 There is no API stability guarantee for now, but we will try to keep breaking changes to a minimum. This version of Gtk# can be installed in parallel with Gtk# 2.x, and should not have any impact on applications using Gtk# 2.x. New features and enhancements ----------------------------- * Support for async/await in the GTK main thread If you use the async/await keywords in your Gtk# app, things will now work as expected with the GTK main thread. For example: static async void DoWork () // called in the GTK main thread { // Do some stuff with the UI... label.Text = "Starting Work"; // Run something asynchronously, UI is not frozen int res = await DoLongOperation (); // Do some more UI stuff, it'll run on the GTK main thread label.Text = "Work done"; } * gui-thread-check profiler module This mono profiler module can be used to check if a GTK# application is trying to invoke gtk or gdk methods from a thread which is not the main GUI thread. To use it, run your application with the command: mono --profile=gui-thread-check yourapp.exe If the profiler is properly installed, you'll see an output like this: *** Running with gui-thread-check *** GUI THREAD INITIALIZED: *** 2861676352 While the application is running, if the profiler detects a non-gui thread invoking gtk methods, it will print a warning message together with a stack trace. For example: *** GTK CALL NOT IN GUI THREAD: Widget.gtk_widget_get_parent Widget.get_Parent SomeWidget.DoSomething BackgroundWorker.OnDoWork BackgroundWorker.ProcessWorker * cairo: Rework the handling of native resources, to reduce memory leaks. In general, the caller is responsible for disposing IDisposable objects returned from any method. * cairo: Add mechanism to debug missing Dispose calls, enabled by setting a new MONO_CAIRO_DEBUG_DISPOSE environment variable. * Provide and use an XML schema definition to validate GAPI XML files. * Use generic collections in the generated code, in custom code and in the generator itself. * Improve handling of command-line parameters in the generator. * glib: Install interfaces before they are initialized, to match the behavior now required by glib 2.36 and above. Changes ------- * Generate all interfaces with the "I" prefix, to match .NET coding convention. For example, Scrollable is now IScrollable. * gdk: Remove AddClientMessageFilter method from Gdk.Display and Gdk.Global * cairo: Add SetSourceColor method to Cairo.Context. * gio: Correct return types for methods returning GList*, in various classes * gio: Rename Content class to ContentType and adjust method names * gio: Move the module-related static functions into the IOModule class, adjust their names and fix the return types * gio: Move the scheduler-related static functions into IOSchedulerJob * gio: Move ErrorQuark method to GioGlobal * gio: Create IOError class, with FromErrno and FromWin32Error methods * gio: Rename the Dbus class to DBus, to have consistent capitalization * gio: Rename all GDbus* properties to GDBus*, with correct capitalization * gio: Rename the DBus.AddressGet* methods to DBus.Get* * gio: Move static methods from Simple to SimpleAsyncResult class * gio: Hide GioGlobal.RegistryBackendGetType method * gio: Mark the ISeekable interface as consume-only * gio: Correct GSettings.GetStrv and SetStrv values to be string[] * gtk: Mark the whole Style class as obsolete * gtk: Fix return types for several methods: GtkCellArea.GetFocusSiblings, GtkMenu.GetForAttachWidget, GtkWindowGroup.ListWindows * gtk: Make the Group property for Radio* widgets a properly typed array * gtk: Fix return types for IterList* methods in WidgetPath * gtk: Change the second parameter in AccelMap.LookupEntry to be an out param Bug fixes --------- * generator: Add validation check for return values that are arrays * cairo: Fix rectangles returned by StrokeExtents and FillExtents methods * cairo: Fix various text API calls to use the correct types * glib: Fix crash when freeing lists with elements typed as interfaces * gdk: Allow passing a null Gdk.Event * gtk: Fix return type of IRecentChooser.GetUris to an array of strings =============================================================================== Gtk# 2.99.0 - 2012-10-23 =============================================================================== Gtk# 2.99.0 is the first release of C# bindings for GTK 3.x. This is a beta release, primarily intended for applications developers who want to start porting their application to GTK 3.x. This version of Gtk# provides bindings for the API exposed by these libraries: * cairo 1.10.0 * glib 2.28.0 * pango 1.28.3 * atk 1.32.0 * gdk-pixbuf 2.22.1 * gtk+ 3.0.0 There is no API stability guarantee for now, but we will try to keep breaking changes to a minimum. This version of Gtk# can be installed in parallel with Gtk# 2.x, and should not have any impact on applications using Gtk# 2.x. Changes ------- * All the new APIs provided by GTK 3.0 and friends are now available. * Gtk# now provides bindings for cairo 1.10 in cairo-sharp.dll. In the future we might go back to using the Mono.Cairo.dll binding included in Mono. * Bindings for Gio are now included, instead of requiring a separate gio-sharp package. * GLib.Object now uses the Dispose pattern. Subclasses that need to do resource clean-up should implement a Dispose(bool) method. * Custom code is now provided solely using partial classes. The Foo.custom files that were used before are now proper Foo.cs files. * Various enhancements to the parser and the generator. Bug fixes --------- * generator: Properly handle boolean attributes when parsing the GAPI XML * glib: do not call g_thread_ functions in GLib >= 2.31 * gtk: Fix resurrection cycles in container subclasses (bxc#3801) Lots of other bug fixes are included, in particular all the relevant fixes from the stable 2.12 branch.