faaccd7e0b
new methods to allow arbitrary setup and teardown code around the managed call. When passing a type with "complicated" marshalling requirements as a ref or out param, first assign the value to a temporary variable (in Setup), then pass the temp as the ref or out param (in ToString), and then assign the new value back to the original argument (in Finish). * generator/Signal.cs: * generator/SignalHandler.cs: Update to generate correct glue for signals with "ref" or "out" params. (#70566) * generator/VirtualMethod.cs: Update for ManagedCallString change * generator/IGeneratable.cs: add comments explaining what each member does * gtk/Gtk.metadata: mark Editable.InsertText's "position" arg * pass-by-ref * sample/Size.cs: connect to the SizeRequested event and override it, to test/demo the changes svn path=/trunk/gtk-sharp/; revision=37854
49 lines
1.2 KiB
C#
49 lines
1.2 KiB
C#
// Size.cs - struct marshalling test
|
|
//
|
|
// Author: Rachel Hestilow <hestilow@ximian.com>
|
|
//
|
|
// (c) 2002 Rachel Hestilow
|
|
|
|
namespace GtkSamples {
|
|
|
|
using Gtk;
|
|
using Gdk;
|
|
using System;
|
|
|
|
public class SizeTest {
|
|
|
|
public static int Main (string[] args)
|
|
{
|
|
Application.Init ();
|
|
Gtk.Window win = new Gtk.Window ("Gtk# Hello World");
|
|
win.DeleteEvent += new DeleteEventHandler (Window_Delete);
|
|
win.SizeAllocated += new SizeAllocatedHandler (Size_Allocated);
|
|
win.SizeRequested += new SizeRequestedHandler (Size_Requested);
|
|
win.ShowAll ();
|
|
Application.Run ();
|
|
return 0;
|
|
}
|
|
|
|
static void Window_Delete (object obj, DeleteEventArgs args)
|
|
{
|
|
Application.Quit ();
|
|
args.RetVal = true;
|
|
}
|
|
|
|
static void Size_Requested (object obj, SizeRequestedArgs args)
|
|
{
|
|
Requisition req = args.Requisition;
|
|
Console.WriteLine ("Requesting 100 x 100");
|
|
req.Width = req.Height = 100;
|
|
args.Requisition = req;
|
|
}
|
|
|
|
static void Size_Allocated (object obj, SizeAllocatedArgs args)
|
|
{
|
|
Rectangle rect = args.Allocation;
|
|
if (rect.Width == 0 || rect.Height == 0)
|
|
Console.WriteLine ("ERROR: Allocation is null!");
|
|
Console.WriteLine ("Size: ({0}, {1})", rect.Width, rect.Height);
|
|
}
|
|
}
|
|
}
|