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.
* 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
* *: 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.
* 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/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: 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/Widget.custom: Implement signal registration for the
Activate, SettScrollAdjustments and key binding signals
in managed code.
svn path=/trunk/gtk-sharp/; revision=132771
* gtk/Widget.custom: guard against MissingIntPtrCtorException in
the Activate and SetScrollAdjustments funky signal VM impl. Can't
use SignalClosure easily. Could be reworked more cleanly at some
point. Or not.
svn path=/trunk/gtk-sharp/; revision=103827
* AssemblyInfo.cs.in : add IgnoreClassInitializers attr to all.
* generator/ObjectGen.cs : add custom-attr generation for objects.
* glib/ClassInitializerAttribute.cs : obsolete
* glib/IgnoreClassInitializersAttribute.cs : new assembly attr
to avoid a blind GetMethods reflection.
* glib/Makefile.am : add files
* glib/TypeInitializerAttribute.cs : new attr to specify init
method to be run at type registration.
* gtk/Widget.custom : remove the ClassInitializerAttr.
* gtk/Gtk.metadata : add a custom-attr node to GtkWidget.
* sample/Subclass.cs : use the IgnoreClassInitializers attr.
svn path=/trunk/gtk-sharp/; revision=85480
* generator/*.cs : switch to IntPtr marshaling for struct types
in the managed to native direction.
* gtk/*.custom : adjust to new gapi struct pinvoke sigs.
svn path=/trunk/gtk-sharp/; revision=83961
* gtk/Widget.custom (StyleGetProperty): return null if
gtksharp_widget_style_get_property returns FALSE (property
doesn't exist) [Fixes#81445]
* gtk/glue/widget.c (gtksharp_widget_style_get_property): check
return of gtk_widget_class_find_style_property for NULL; function now
returns TRUE if spec is not NULL, FALSE otherwise
svn path=/trunk/gtk-sharp/; revision=76217
* gtk/Widget.custom:
StyleGetPropertyValue that returns a GLib.Value when StyleGetProperty cannot automatically cast the GLib.Value (eg: Gdk.Color)
[Fixes#81253]
* doc/en/Gtk/Widget.xml:
Documentation for the new StyleGetPropertyValue method and improved documentation for StyleGetProperty
* gtk/TreeView.custom:
OddRowColor and EvenRowColor properties
* doc/en/Gtk/TreeView.xml:
documentation for OddRowColor and EvenRowColor properties
svn path=/trunk/gtk-sharp/; revision=75816
* gtk/Widget.custom : add overloads for Modify* without a Gdk.Color
param to reset color to default. [Fixes#75913]
svn path=/trunk/gtk-sharp/; revision=49085
* generator/CodeGenerator.cs: add a --glue-includes flag
* generator/GenerationInfo.cs: Accept glue_includes value from
Main and output it to the glue_filename.
* generator/FieldBase.cs (Ignored): handle more ignorable cases.
(CheckGlue): New method to figure out what kind of glue we'll need
for a field.
(GenerateImports): generate appropriate imports per CheckGlue.
(GenerateGlue): Generate C glue for accessing a struct field;
either a fully-C-based accessor, or a method to just return the
field's offset in the struct.
(Generate): Use the generated glue to read the field.
* generator/PropertyBase.cs (CType): if the field is a single bit,
set its type to gboolean.
* generator/ObjectGen.cs (Generate):
* generator/OpaqueGen.cs (Generate): Call GenFields.
* generator/StructField.cs: Use FieldBase's glue-generation code
to handle bitfields. [#54489]
* generator/ObjectField.cs: Generates accessors for public fields
of objects and opaque structs. [#69514]
* generator/ClassBase.cs (ClassBase): Parse <fields> nodes and
create ObjectField objects.
(GenFields): Output field properties
(IgnoreMethod): Ignore Get/Set methods that duplicate fields
* generator/Makefile.am (sources): update
* {gdk,gnome,gtk,pango}/*.metadata: Mark some additional fields as
public. Rename/retype some fields for consistency with earlier
hand-coded bindings.
* {gdk,gnome,gtk,pango}/*.custom: Remove custom methods that can
now be autogenerated.
* {gdk,gnome,gtk,pango}/glue/*.c: Remove glue methods that can now
be autogenerated
* {gdk,glade,gnome,gtk,pango,vte}/Makefile.am
* {gdk,glade,gnome,gtk,pango,vte}/glue/Makefile.am
* {gdk,gnome,gtk,pango}/glue/makefile.win32: Update
svn path=/trunk/gtk-sharp/; revision=44563
* gtk/Object.custom : hold refs for all managed subclasses. Release on
Destroy. Dispose plain wrappers on Destroy also.
* gtk/Widget.custom : remove the parent set hack since it's "handled"
on Gtk.Object now. All this will get fixed properly when we have
access to owen's toggle_refs.
svn path=/trunk/gtk-sharp/; revision=44506
* gtk/Object.custom : Dispose on a Destroyed event.
* gtk/Widget.custom : rework the parent_set hack to go direct to
the native signal instead of using the event so we avoid rewrapping of
already destroyed parents.
svn path=/trunk/gtk-sharp/; revision=44388
they're generated wrong, and StyleGet to avoid an ellipsis
warning. (Also hide the deprecated ellipsis method "Set".)
* gtk/Widget.custom (StyleGetProperty): implement manually, a la
Gtk.Container.ChildGetProperty.
* gtk/glue/widget.c (gtksharp_widget_style_get_property): glue for that
svn path=/trunk/gtk-sharp/; revision=40481
* gtk/Widget.custom : use a static method for the ParentSet hack
so we don't leak objects because the delegate holds an object ref.
svn path=/trunk/gtk-sharp/; revision=40346
* glib/ClassInitializerAttribute.cs : new attr for identifying type.
inialization methods to be run by RegisterGType.
* glib/Makefile.am : add file.
* glib/Object.cs : add private method to invoke ClassInitializers.
* gtk/glue/widget.c : some new glue for binding registration.
* gtk/BindingAttribute.cs : new attr for registering key bindings.
* gtk/Makefile.am : add file.
* gtk/Widget.custom : add ClassInitializer method to scan types
for [Binding] and register key bindings.
svn path=/trunk/gtk-sharp/; revision=38074
* gtk/Gtk.metadata : hide Object and Widget.Destroy.
* gtk/Object.custom : manual virtual Destroy impl.
* gtk/Widget.custom : manual virtual Destroy impl.
* gtk/Window.custom : hold a managed ref for all toplevels. Release
it in a Destroy override. Window is frequently subclassed and is
never parented, so this keeps a managed ref around to avoid GC.
[Fixes#70120]
svn path=/trunk/gtk-sharp/; revision=37914
* gdk/Gdk.metadata : mark out param on Window.GetFrameExtents.
* gdk/WindowAttr.custom : new typed Mask prop.
* gtk/Widget.custom : new typed WidgetFlags prop. mark Flags obsolete.
svn path=/trunk/gtk-sharp/; revision=37909
(Object(GType)): Mark this ctor Obsolete
* gtk/Gtk.metadata: disable the generated GType ctor on Gtk.Widget
* gtk/Widget.custom (Widget, CreateNativeObject,
Widget_ParentSet): Connect to our own ParentSet event from
CreateNativeObject and the GType ctor, and keep a static Hashtable
of parented widgets, so that adding a managed widget to a
container keeps both the GObject and the managed object alive.
* generator/ObjectGen.cs (GenCtors): handle the disable_gtype_ctor
flag. Also, mark GType ctors [Obsolete]
svn path=/trunk/gtk-sharp/; revision=35885
* */*.cs : add lgpl license blurb and clean up (c)'s.
* */*.custom : add lgpl license blurb and clean up (c)'s.
* */glue/*.c : add lgpl license blurb and clean up (c)'s.
file adds without license from now on are punishable by wedgie.
svn path=/trunk/gtk-sharp/; revision=30401
* gtk/Widget.custom: expose some easy bool properties for checking
certain WidgetFlags. Make Allocation a settable property.
* gtk/glue/widget.c: bit of glue to make Allocation settable.
* gdk/Window.custom: expose UserData as a usable IntPtr property.
* gdk/Gdk.metadata: hide old GetUserData/SetUserData methods.
* doc/*: ran the updater.
svn path=/trunk/gtk-sharp/; revision=28974