This makes the code 64-bit clean (instead of assuming that a pointer
fits in a Int32) and simplifies the code.
Although the GTK doc doesn't say so, the C code shows the array is NULL
terminated, so we should be OK here.
Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
There are no real code changes in this commit, just a lot of file
renaming and boilerplate additions.
A few .custom files are just removed, because the corresponding class in
GTK is gone, so they were not really used anymore.
Some files need to be re-indented, but that will be done in a separate
commit, so that git can track the renamed files correctly and not be
confused by all the changes.
A few properties would not be generated, as a property with the same
name already exists in the Widget class. To resolve this, we mark the
corresponding accessors as new.
When creating a subclass of ComboBox with an entry, the has-entry
property was not initialized, leading to a crash when trying to access
the entry.
For subclasses of ComboBoxText, two other properties were not
initialized, leading to Gtk-CRITICAL error messages.
In gtksettings.c, properties are installed using a custom function. So a
few properties were added as custom code. Move those as a fixup, and add
all the other properties too.
The only missing properties now are gtk-im-preedit-style and
gtk-im-status-style, because their type is hidden.
G_DEFINE_TYPE_EXTENDED is the general macro for type implementations, on
which G_DEFINE_TYPE_WITH_CODE is based. Handle it just like
G_DEFINE_TYPE_WITH_CODE.
Reparse the API with that change, which marks a few classes as
implementing GtkStyleProvider.
Add ComboBox[Text] (bool with_entry) protected constructors to allow
subclasses with an Entry.
Add an Entry property for easy access to the Entry child widget.
Also remove the unused gtk/ComboBoxEntry.custom.
The interface parsing fix added a few properties on interfaces that have
no accessors. In this case, the code generated in the adapter for those
properties does not build: it tries to use (Get/Set)Property but they
don"t inherit from Glib.Object.
Hide those properties for now, until a proper fix is implemented. As
they were not available before, it's not that bad.
With the new G_DEFINE_INTERFACE macro, the interface initialization
function is named *_default_init, so we need to handle that like
*_base_init and *_class_init.
Reparse gtk/gtk-api.raw and gio/gio-api.raw. This creates some new
signals that were previously incorrectly reported as virtual methods,
and also adds some properties.
The action area is created as a GtkButtonBox, so casting it to a
GtkHButtonBox doesn't work. And GtkHButtonBox is going to be deprecated
in 3.2 anyway.
This fixes a crash when accessing Dialog.ActionArea. With this,
everything in sample/test seems to work OK.
When Gtk.Object was removed, most of the code was moved to Gtk.Widget.
But the part that deals with floating references actually belongs in
Glib.InitiallyUnowned.
This fixes various issues, in particular crashes in the TreeModelDemo
sample.
* generator/CallbackGen.cs: connect return value count parameters
* generator/ManagedCallString.cs: out count params aren't special
* generator/MethodBody.cs: don't finish hidden params
* generator/Parameters.cs: explicit IsCount setting support, with
Parameters.GetCountParameter(name) interface. Clear IsCount
values during validation if they have no associated array. Any
remaining count params must be associated with a retval, so
hide them.
* generator/ReturnValue.cs: support array_length_param attribute to
associate a return value with a "count" param. Use new helper
methods to marshal these array retvals to IntPtr and back.
* glib/Marshaller.cs: support for byte[] marshaling to and from
IntPtr using a count and type in the from native direction.
* gtk/Gtk.metadata: mark TextBufferSerializeFunc return type as
an array with the length specific in the length param.
* gtk/Gtk.metadata: hide the Render class
* gtk/Makefile.am: build the new file
* gtk/StyleContext.cs: instance methods for the gtk_render_* api using
the internal generated Render class.
* gtk/Gtk.metadata: properties of type GdkRGBA get converted to
type="GdkRgba" by the parser name mangling. Manual fix those
and clean up the lists, ellipsis, and out param API in the new
StyleContext object.
Hyena has bindings to gtk_show_uri. Now that gtk-sharp binds
this API targeting 3.x, we can bring the extra overloads from
hyena and mark them as obsolete there.
* glib/Object.cs: move finalization queue to ToggleRef and make
Dispose() non-virtual with a protected virtual Dispose(bool).
Also added a WarnOnFinalize static property to produce nags for
undisposed objects.
* glib/ToggleRef.cs: add finalization queue and QueueUnref method.
* gtk/NodeStore.cs: override Dispose(bool)
* gtk/Widget.custom: override Dispose(bool)
* gdk/Display.custom: rework signal connection
* gdk/Window.custom: rework signal connection
* generator/Signal.cs: generate for new API.
* glib/Object.cs: add (Add|Remove)SignalHandler methods and use
them for the Notify connections. Move to generic collections for
everything but the Data hash.
* glib/Signal.cs: kill Lookup methods and add delegate fields
* glib/ToggleRef.cs: remove Signals hash, it doesn't belong here.
* gtk/Clipboard.custom: rework signal connection
* gtk/ListStore.custom: rework signal connection
* gtk/TextView.custom: remove obsolete signal
* gtk/TreeModelAdapter.custom: rework signal connection
* gtk/TreeModelFilter.custom: rework signal connection
* gtk/TreeModelSort.custom: rework signal connection
* gtk/TreeStore.custom: rework signal connection
* gtk/Widget.custom: rework signal connection
* gtk/Window.custom: remove obsolete signal
* gtk/Gtk.metadata: mark GetContentArea return as a GtkBox* and
remove some unmatched fields on GtkDialog.
* sample/TreeViewDemo.cs: use Dialog.ContentArea instead of VBox.
* *: s/win32-2.0-0/win32-3.0-0/ I suspect this will need to change
again when I see some win32 binaries. I think the win32 goes away.
Killing a few dead customs in the list as well.
* configure.ac: drop cairo conditionality
* cairo/AssemblyInfo.cs: set version to 1.10.0.0
* cairo/Makefile.am: unconditional build and add Region.cs
* cairo/cairo-api.xml: initial type exposure.
* pango/Makefile.am: use cairo-sharp.dll and cairo-api.xml
* pango/Pango.metadata: drop explicit symbol additions.
* gdk/Gdk.metadata: drop explicit symbol additions.
* gdk/Makefile.am: use cairo-sharp.dll and cairo-api.xml
* gtk/Makefile.am: use cairo-sharp.dll and cairo-api.xml
* sample/Makefile.am: use cairo-sharp.dll
* sample/GtkDemo/Makefile.am: use cairo-sharp.dll
This is an initial stab at a 1.10 binding. It will probably take
more based on the number of errors still coming out of the Gdk
build.
2010-11-21 Mike Kestner <mkestner@novell.com>
* removed the glade dir from the build since libglade is
no longer supported in gnome3. removed the gapi2-compat stuff
since it doesn't make much sense now. Removed the bootstrap
mechanism since we are unlikely to be releasing multiple API
versions from the same tree going forward. The build is now a
straight autogen.sh like most autotools projects.
* generator/Method.cs: support win32_utf8_variant attribute on methods.
* glib/*.cs: support win32 utf8 variant methods.
* gtk/*.custom: support win32 utf8 variant methods.
* gtk/Gtk.metadata: mark some win32_utf8_variant methods.
[Fixes#550961] Adapted from a patch by Tor Lillqvist.
svn path=/trunk/gtk-sharp/; revision=147113
* gtk/Application.cs: Port the theming-relevant part of the
SWF.Application.DoEvents code to avoid loading the assembly
at runtime on the Windows platform.
svn path=/trunk/gtk-sharp/; revision=141783
* glib/Global.cs: Kill the calling convention field again.
It breaks GLib 2.x compatibility in the generator and there is
probably no need to make the calling convention configurable.
* .cs, *.custom: Hardcode Cdecl calling convention instead of
using GLib's field.
svn path=/trunk/gtk-sharp/; revision=141283
* glib/Global.cs: Add a public constant field specifying the
calling convention used by GLib and depending libraries.
By now it's hardcoded to Cdecl as every non-Win32 runtime
should ignore this attribute.
* *.cs, *.custom: Use GLib.Global.CallingConvention for both
pinvokes and callbacks. Plugs a stack leak on Win32. All
pinvokes defaulted to StdCall and thus the stack was never
cleaned up.
svn path=/trunk/gtk-sharp/; revision=141175
Complete the major version jump. Gtk# 3 and 2 are now both
installable within the same prefix.
* */glue/Makefile.am: Produce *sharpglue-3 gluelibs.
* *.custom, *.cs: pinvoke the new glue library.
* *-2.0.pc.in: Rename to *-3.0.pc.in.
svn path=/trunk/gtk-sharp/; revision=140941
* gtk/Object.custom: Deglue the floating reference API.
We should consider moving all that stuff to GInitiallyUnowned
as Gtk+ did several releases ago.
svn path=/trunk/gtk-sharp/; revision=140940
* gtk/StatusIcon.custom: Use managed code to pass the address of
gtk_status_icon_position_menu to gtk_menu_popup.
svn path=/trunk/gtk-sharp/; revision=140939
* gtk/Widget.custom: Set the activate/set_scroll_adjustments signal IDs
from managed code. Use the gtk_widget_get_window accessor.
* gtk/glue/widget.c: Remove the corresponding glue functions.
svn path=/trunk/gtk-sharp/; revision=139851
* configure.in.in: Detect GDK backend.
* */*.dll.config.in: Link against the libs of the correct GDK backend
instead of using x11 on Linux/win32 on Windows.
Patch by Christian Hergert. [Fixes 527840]
svn path=/trunk/gtk-sharp/; revision=139750
* configure.in.in: add new dir and autofu for it.
* Makefile.am: add new dir
* gapi/*: a small extension method library to add generation-related
api to GType in 2.0. Access it with -pkg:gapi-2.0-compat to pick up
the needed refs.
* generator/GObjectVM.cs: generate new GType getter methods.
* generator/ObjectGen.cs: generate new GType getter methods.
* glib/GType.cs: change a few props to methods to make them extension
method friendly for 2.0 compat.
* glib/Object.cs: use new GType getter methods.
* glib/Value.cs: use new GType getter methods.
* gtk/Widget.custom: use new GetClassPtr method.
svn path=/trunk/gtk-sharp/; revision=139609
* configure.in.in: Target .net 2.0 profile
* gapi-cdecl-insert: Kill. We are now using the UnmanagedFunctionPointerAttribute
for callbacks.
* glib/CdeclCallback: Mark obsolete.
* generator/*.cs:
* *.custom: Use [UnmanagedFunctionPointer (CallingConvention.Cdecl)] instead of
[GLib.CDeclCallback].
svn path=/trunk/gtk-sharp/; revision=137323
* gtk/Widget.custom: Don't use [MarshalAs] for struct fields since
that is not supported in the .net framework
svn path=/trunk/gtk-sharp/; revision=136157
* gtk/Application.cs: add the theme initialization workaround for
windows. Hopefully we can find a better solution that doesn't
involve loading SWF. [Fixes#471682]
svn path=/trunk/gtk-sharp/; revision=134008
* gtk/Widget.custom: Implement signal registration for the
Activate, SettScrollAdjustments and key binding signals
in managed code.
svn path=/trunk/gtk-sharp/; revision=132771
Add support for virtual methods(vm) to the generator.
* parser/gapi2xml.pl: Generate a class_struct element with
all members of the class structure. Dump the first (instance)
parameter for signal and vm elements. Bump up parser version.
* generator/GObjectVM.cs: Added. Support for GObject virtual methods.
* generator/DefaultSignalHandler.cs: Signal specific part of vm
generation.
* generator/InterfaceVM.cs: New class for interface vms.
* generator/ObjectBase.cs: Parse the class struct.
svn path=/trunk/gtk-sharp/; revision=131604
* gtk/Target.custom: custom implementation of TableNewFromList.
* gtk/TargetList.custom: use Target.TableNewFromList method
to convert the TargetList to a TargetEntry array.
* gtk/glue/targetlist.c: deleted.
svn path=/trunk/gtk-sharp/; revision=131066
* parser/gapi2xml.pl: Introduce a "parser_version" attribute.
* generator/GenBase.cs: Implement a property to access the
attribute's value.
svn path=/trunk/gtk-sharp/; revision=129807
* gtk/NodeSelection.cs: use new Adapter prop on NodeStore.
* gtk/NodeStore.cs: some encapsulation rework.
* gtk/NodeView.cs: use new Adapter prop on NodeStore. new methods
to support manipulation of the view by TreeNode, like scrolling
and cell bounds lookups.
* gtk/TreeView.cs: use new Adapter prop on NodeStore.
* doc/en/Gtk/NodeView.xml: new doc updates.
Patch provided by Vladimir Giszpenc. [Fixes#480067]
svn path=/trunk/gtk-sharp/; revision=129498
* generator/ReturnValue.cs: map gfilename* list elements to type
ListBase.FilenameString so they are marshaled correctly.
* glib/Marshaller.cs: handle FilenameStrings in ListPtrToArray.
* gtk/Gtk.metadata: FileChooser.GetFilenames and ListShortcutFolders
return type mangling to avoid custom implementations.
* gtk/FileChooser*.custom: kill manual Filenames and ShortcutFolders.
svn path=/trunk/gtk-sharp/; revision=122802