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