Commit graph

706 commits

Author SHA1 Message Date
Rickard Edström
8e07e7d225 Add a SynchronizationContext implementation for GLib (bnc#621444)
Create a GLibSynchronizationContext that sends code to be run on the
GLib main loop, and set it as the current SynchronizationContext in
Gtk.Init().

When you use the await keyword to do a task asynchronously, by default
the awaiter will capture the current SynchronizationContext, and if
there was one, when the task completes it’ll Post the supplied
continuation back to that context, rather than running it on whatever
thread it wants.

This means that 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";
}

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
2012-11-08 22:33:46 +01:00
Bertrand Lorentz
2edff869fd gui-thread-check: Fix some compilation warnings 2012-11-04 18:16:22 +01:00
Bertrand Lorentz
bd41e1150d Add the gui-thread-check profiler module by Lluis Sanchez
This is a mono profiler module that can be used to detect when GTK or
GDK methods are called from a thread which is not the main GUI thread.

Thanks to Andrés Aragoneses for doing the work to bring this into Gtk#.
2012-11-04 18:00:56 +01:00
Bertrand Lorentz
6850b343ca gtk: Switch to generic collections in some classes 2012-11-04 16:58:50 +01:00
Andres G. Aragoneses
38e920996a gui-thread-check: Remove stock INSTALL file
It didn't contain any gui-thread-check's specifics.
2012-11-04 00:43:08 +00:00
Andres G. Aragoneses
3af6df2a2c gui-thread-check: Remove NEWS file (it was empty) 2012-11-04 00:42:22 +00:00
Andres G. Aragoneses
d58243149d gui-thread-check: Merge README with gtk-sharp's 2012-11-04 00:42:01 +00:00
Andres G. Aragoneses
0ed390b201 gui-thread-check: Remove AUTHORS
Lluis is already included in AUTHORS file of gtk-sharp.
2012-11-04 00:41:20 +00:00
Andres G. Aragoneses
38770b8917 gui-thread-check: Merge config/build infrastructure with gtk-sharp 2012-11-04 00:32:09 +00:00
Andres G. Aragoneses
ab447d924a gui-thread-check: Remove bogus Makefile.in
This is regenerate at every build (from Makefile.am) so
there's no need to store it in the repo. It must have been
included by mistake during the move.
2012-11-04 00:27:00 +00:00
Andres G. Aragoneses
797382180b Moved gui-thread-check subfolder inside gtk subfolder.
It's just really a profiler module facility for GTK, so it's not
related to the rest of the libraries/APIs that are not GTK and live
here.
2012-11-03 23:06:02 +00:00
Bertrand Lorentz
c312fb739c gtk: Move interface declaration from fix-up to custom code
As we now use partial classes for custom code, we can put additional
interface implementation declaration in the custom code, instead of
adding it through a fix-up.

Side-note: I thought about moving to IEnumerable<T>, but ListStore is a
list of objects anyway, and Container is an array of Widgets, so there
wouldn't be much benefit from type safety.
2012-11-03 17:50:05 +01:00
Bertrand Lorentz
c3b3036441 gtk: Fix return type of RecentChooser.GetUris
The native function returns a NULL-terminated array of strings, so add
this as a fix-up.
2012-11-02 19:48:02 +01:00
Bertrand Lorentz
60612071c1 Add a MonoDevelop solution and projects for browsing the codebase
This is just to be able to use MonoDevelop to browse the codebase, both
custom and generated code. It is NOT intended to be used to build
anything.
2012-10-13 16:44:10 +02:00
Michael Hutchinson
b5e0d297bb Fix resurrection cycles in container subclasses (bxc#3801) 2012-10-13 15:07:03 +02:00
Michael Hutchinson
3a044d6faf Fix stack overflow in subclasses of managed containers 2012-10-13 15:06:51 +02:00
Bertrand Lorentz
446f2e7c7a gtk: Fix a small issue in the previous commit to IconTheme
The native array has an extra NULL element, so we pass the length of the
managed array, which is the real length of the array.
2012-09-05 22:40:50 +02:00
Carlos Martín Nieto
9c54fd5ae7 gtk: Use the GLib marshaller in IconTheme.SearchPath
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>
2012-09-05 21:16:54 +02:00
Bertrand Lorentz
54f5025375 gtk: Remove commented-out code from Gtk.Style
Gdk.GC is gone for good, so there no point in keeping anything that was
using it.
2012-08-05 19:42:34 +02:00
Bertrand Lorentz
140cad141f gtk: Remove the custom code for ColorSelectionDialog
It has been obsolete for quite a while, and had a scary warning.
2012-08-05 19:33:52 +02:00
Bertrand Lorentz
0b155d2603 gtk: Remove the custom code for Table
It was commented out anyway, and the Table widget is deprecated.
2012-08-05 19:12:22 +02:00
Bertrand Lorentz
4bc7edb4b1 gtk: Add license header in TreeModelFilter.cs
Copyright information is based on the data from "git blame -w"
2012-08-05 19:06:18 +02:00
Bertrand Lorentz
a8e1e8fd7d gtk: Re-indent code that was moved inside partial classes
No real code change in this commit, just whitespace changes.
2012-08-05 17:24:05 +02:00
Bertrand Lorentz
a410d42975 gtk: Move all .custom files to partial classes
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.
2012-08-05 16:32:41 +02:00
Mike Kestner
8a0d28372c Merge pull request #31 from bl8/cairo-fixes
Cairo fixes
2012-03-28 20:04:06 -07:00
Bertrand Lorentz
a804895ce6 Add fix-ups so that missing properties are generated
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.
2011-12-10 14:53:47 +01:00
Bertrand Lorentz
d9bef0d869 gtk: Fix creation of ComboBox and ComboBoxText subclasses with entry
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.
2011-12-05 19:14:05 +01:00
Bertrand Lorentz
21bfaa7a9d gtk: Mark the Cairo.Context in Widget.Drawn as owned
We shouldn't increase the reference count on the native cairo context
when we get it as a signal parameter, so we mark it as owned.
2011-12-04 22:39:52 +01:00
Bertrand Lorentz
7c61e2bdc0 Remove custom code for PrintContext.CairoContext
As Cairo.Context is now marked as an ownable, the accessor generated
for PrintContext.CairoContext will be equivalent to what was in the
custom code.
2011-12-04 22:39:52 +01:00
Mike Kestner
aae2b05300 Implement IEquatable<T> on structs.
* gdk/Gdk.metadata: suppress Color.GetHashCode().
* gdk/Point.custom: remove generated methods.
* generator/StructBase.cs: Generate Equals(T), Equals(object), and GetHashCode.
* generator/StructField.cs: helper property for equality testing.
* gtk/TreeIter.custom: remove generated methods.
2011-10-07 21:55:26 -05:00
Olivier Dufour
b14746d856 Fix build of gtk# by avoiding colision introduced with properties for ginterface 2011-08-02 19:27:22 +02:00
Olivier Dufour
f0579eb53d parser: Add property support for ginterface 2011-08-01 21:18:02 +02:00
Mike Kestner
fe776b3a48 Merge pull request #21 from bl8/gtk-settings-props
Gtk.Settings: Add all properties as a fixup
2011-08-01 07:45:00 -07:00
Bertrand Lorentz
ecc2fa29fa Gtk.Settings: Add all properties as a fixup
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.
2011-07-31 15:29:48 +02:00
Bertrand Lorentz
63db97e9ad parser: Handle the G_DEFINE_TYPE_EXTENDED macro
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.
2011-07-31 12:32:43 +02:00
Mike Kestner
da1481b23d Mark Widget::draw as manually marshaled
* gtk/Gtk.metadata: Widget draw signal has a cairo_t param that is
    problematic to marshal as a GLib.Value.  Manually marshal it.
2011-07-28 17:16:28 -05:00
Mike Kestner
1a0ecbb111 Add gio-sharp dep to gtk-sharp pc file 2011-07-18 12:44:44 -05:00
Bertrand Lorentz
b0768d35f6 gtk: Include ComboBoxText.cs in the build
Also add missing using statement.
2011-07-16 18:18:14 +02:00
Bertrand Lorentz
9463e98ca2 gtk: move ComboBoxText custom code to a partial class
Also rename the constructor parameter to has_entry and pass its value to
CreateNativeObject.
2011-07-16 17:53:21 +02:00
Bertrand Lorentz
bef589e836 gtk: Facilitate use of ComboBox and ComboBoxText with an Entry
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.
2011-07-16 15:45:30 +02:00
Bertrand Lorentz
a529ca3a94 Temporary quick fix for properties in interfaces without accessors
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.
2011-07-08 20:12:07 +02:00
Bertrand Lorentz
139191f537 Fix naming collisions created by the interface parsing fix
The previous commit added several new signals in Gio.ActionGroup and
Gtk.GtkCellEditable that collide with method names. Do some rename
to fix this.
2011-07-08 20:12:07 +02:00
Bertrand Lorentz
ad74c64345 parser: Fix handling of initialization functions for interfaces
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.
2011-07-08 20:12:07 +02:00
Mike Kestner
59e38f55dc Merge pull request #10 from bl8/various-fixes
Various build fixes, fixups and clean ups
2011-07-04 10:17:52 -07:00
Bertrand Lorentz
e108bf59d4 gtk: Re-enable NodeView.CreateRowDragIcon method 2011-07-03 16:44:15 +02:00
Bertrand Lorentz
23a0aa7af2 gtk: Fix crash in CellRenderer.OnGetSize callback
Handle the case when the native cell_area is not set.
2011-07-03 13:32:35 +02:00
Bertrand Lorentz
a85ebc481f Remove opaque attr from Gtk.Border and fixup some StyleContext methods 2011-07-03 13:32:35 +02:00
Mike Kestner
ebc40cd400 Merge pull request #8 from bl8/update-samples
Update most remaining samples to the new APIs
2011-06-29 17:53:03 -07:00
Mike Kestner
094e6ce29d Merge pull request #7 from bl8/fix-warnings
Various fixes for warnings during codegen, compilation and in the samples
2011-06-29 17:49:37 -07:00
Bertrand Lorentz
5568a568a7 Have Dialog.ActionArea return a ButtonBox instead of a HButtonBox
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.
2011-06-19 12:26:33 +02:00