2005-04-01 Mike Kestner <mkestner@novell.com>
* gtk/Clipboard.custom : manually implement SetWithData and SetWithOwner to handle delegate persistence. * gtk/Gtk.metadata : hide methods. svn path=/trunk/gtk-sharp/; revision=42465
This commit is contained in:
parent
475b44e7ba
commit
3b333bf2b5
3 changed files with 45 additions and 48 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2005-04-01 Mike Kestner <mkestner@novell.com>
|
||||||
|
|
||||||
|
* gtk/Clipboard.custom : manually implement SetWithData and
|
||||||
|
SetWithOwner to handle delegate persistence.
|
||||||
|
* gtk/Gtk.metadata : hide methods.
|
||||||
|
|
||||||
2005-03-31 Dan Winship <danw@novell.com>
|
2005-03-31 Dan Winship <danw@novell.com>
|
||||||
|
|
||||||
* gdk/PixbufLoader.custom: Implement System.IO.Stream and
|
* gdk/PixbufLoader.custom: Implement System.IO.Stream and
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
// Gtk.Clipboard.custom - Customizations for the Clipboard class
|
||||||
|
//
|
||||||
|
// Authors: Mike Kestner <mkestner@novell.com>
|
||||||
|
//
|
||||||
|
// Copyright (c) 2005 Novell, Inc.
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of version 2 of the Lesser GNU General
|
// modify it under the terms of version 2 of the Lesser GNU General
|
||||||
|
@ -14,59 +19,45 @@
|
||||||
// Boston, MA 02111-1307, USA.
|
// Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
|
||||||
/*
|
[DllImport("libgtk-win32-2.0-0.dll")]
|
||||||
public static Hashtable clipboard_objects = new Hashtable ();
|
static extern bool gtk_clipboard_set_with_data(IntPtr raw, TargetEntry[] targets, int n_targets, GtkSharp.ClipboardGetFuncNative get_func, GtkSharp.ClipboardClearFuncNative clear_func, IntPtr data);
|
||||||
private static uint clipboard_object_next_id = 0;
|
|
||||||
|
|
||||||
[DllImport("libgtk-win32-2.0-0.dll")]
|
[DllImport("libgtk-win32-2.0-0.dll")]
|
||||||
static extern bool gtk_clipboard_set_with_data(IntPtr raw, IntPtr targets, int n_targets, GtkSharp.GtkClipboardGetFuncNative get_func, GtkSharp.GtkClipboardClearFuncNative clear_func, uint id);
|
static extern bool gtk_clipboard_set_with_owner(IntPtr raw, TargetEntry[] targets, int n_targets, GtkSharp.ClipboardGetFuncNative get_func, GtkSharp.ClipboardClearFuncNative clear_func, IntPtr owner);
|
||||||
|
|
||||||
[DllImport("gtksharpglue-2")]
|
void ClearProxy (Clipboard clipboard)
|
||||||
static extern IntPtr gtksharp_clipboard_target_list_add (IntPtr list, IntPtr name, uint flags, uint info);
|
|
||||||
|
|
||||||
[DllImport("gtksharpglue-2")]
|
|
||||||
static extern IntPtr gtksharp_clipboard_target_list_to_array (IntPtr list);
|
|
||||||
|
|
||||||
[DllImport("gtksharpglue-2")]
|
|
||||||
static extern void gtksharp_clipboard_target_array_free (IntPtr targets);
|
|
||||||
|
|
||||||
[DllImport("gtksharpglue-2")]
|
|
||||||
static extern void gtksharp_clipboard_target_list_free (IntPtr list);
|
|
||||||
|
|
||||||
GtkSharp.GtkClipboardGetFuncWrapper get_func_wrapper;
|
|
||||||
GtkSharp.GtkClipboardClearFuncWrapper clear_func_wrapper;
|
|
||||||
|
|
||||||
public bool Set (Gtk.TargetEntry[] targets,
|
|
||||||
Gtk.ClipboardGetFunc get_func,
|
|
||||||
Gtk.ClipboardClearFunc clear_func,
|
|
||||||
object data)
|
|
||||||
{
|
{
|
||||||
uint this_id;
|
if (PersistentData ["clear_func"] != null) {
|
||||||
|
ClipboardClearFunc clear = PersistentData ["clear_func"] as ClipboardClearFunc;
|
||||||
lock (clipboard_objects) {
|
clear (clipboard);
|
||||||
this_id = clipboard_object_next_id++;
|
}
|
||||||
clipboard_objects[this_id] = data;
|
SetPersistentData (null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_func_wrapper = new GtkSharp.GtkClipboardGetFuncWrapper (get_func, this);
|
void SetPersistentData (object get_func_wrapper, object clear_func, object clear_proxy_wrapper)
|
||||||
clear_func_wrapper = new GtkSharp.GtkClipboardClearFuncWrapper (clear_func, this);
|
{
|
||||||
|
PersistentData ["get_func_wrapper"] = get_func_wrapper;
|
||||||
IntPtr list = IntPtr.Zero;
|
PersistentData ["clear_func"] = clear_func;
|
||||||
|
PersistentData ["clear_proxy_wrapper"] = clear_proxy_wrapper;
|
||||||
foreach (Gtk.TargetEntry t in targets) {
|
|
||||||
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (t.target);
|
|
||||||
list = gtksharp_clipboard_target_list_add (list, native, t.flags, t.info);
|
|
||||||
GLib.Marshaller.Free (native);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IntPtr array = gtksharp_clipboard_target_list_to_array (list);
|
public bool SetWithData (TargetEntry[] targets, ClipboardGetFunc get_func, ClipboardClearFunc clear_func)
|
||||||
|
{
|
||||||
bool ret = gtk_clipboard_set_with_data (Handle, array, targets.Length, get_func_wrapper.NativeDelegate, clear_func_wrapper.NativeDelegate, this_id);
|
ClipboardClearFunc clear_proxy = new ClipboardClearFunc (ClearProxy);
|
||||||
|
GtkSharp.ClipboardGetFuncWrapper get_func_wrapper = new GtkSharp.ClipboardGetFuncWrapper (get_func);
|
||||||
gtksharp_clipboard_target_array_free (array);
|
GtkSharp.ClipboardClearFuncWrapper clear_proxy_wrapper = new GtkSharp.ClipboardClearFuncWrapper (clear_proxy);
|
||||||
gtksharp_clipboard_target_list_free (list);
|
bool ret = gtk_clipboard_set_with_data (Handle, targets, targets.Length, get_func_wrapper.NativeDelegate, clear_proxy_wrapper.NativeDelegate, IntPtr.Zero);
|
||||||
|
SetPersistentData (get_func_wrapper, clear_func, clear_proxy_wrapper);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SetWithOwner (TargetEntry[] targets, ClipboardGetFunc get_func, ClipboardClearFunc clear_func, GLib.Object owner)
|
||||||
|
{
|
||||||
|
ClipboardClearFunc clear_proxy = new ClipboardClearFunc (ClearProxy);
|
||||||
|
GtkSharp.ClipboardGetFuncWrapper get_func_wrapper = new GtkSharp.ClipboardGetFuncWrapper (get_func);
|
||||||
|
GtkSharp.ClipboardClearFuncWrapper clear_proxy_wrapper = new GtkSharp.ClipboardClearFuncWrapper (clear_proxy);
|
||||||
|
bool ret = gtk_clipboard_set_with_owner (Handle, targets, targets.Length, get_func_wrapper.NativeDelegate, clear_proxy_wrapper.NativeDelegate, owner == null ? IntPtr.Zero : owner.Handle);
|
||||||
|
SetPersistentData (get_func_wrapper, clear_func, clear_proxy_wrapper);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
|
@ -153,8 +153,8 @@
|
||||||
<attr path="/api/namespace/object[@cname='GtkCheckMenuItem']/constructor[@cname='gtk_check_menu_item_new_with_mnemonic']" name="hidden">1</attr>
|
<attr path="/api/namespace/object[@cname='GtkCheckMenuItem']/constructor[@cname='gtk_check_menu_item_new_with_mnemonic']" name="hidden">1</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkCheckMenuItem']/constructor[@cname='gtk_check_menu_item_new_with_label']" name="hidden">1</attr>
|
<attr path="/api/namespace/object[@cname='GtkCheckMenuItem']/constructor[@cname='gtk_check_menu_item_new_with_label']" name="hidden">1</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkCheckMenuItem']/method[@name='Toggled']" name="name">EmitToggled</attr>
|
<attr path="/api/namespace/object[@cname='GtkCheckMenuItem']/method[@name='Toggled']" name="name">EmitToggled</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkClipboard']/method[@name='SetWithData']/*/*[@name='targets']" name="array">1</attr>
|
<attr path="/api/namespace/object[@cname='GtkClipboard']/method[@name='SetWithData']" name="hidden">1</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkClipboard']/method[@name='SetWithOwner']/*/*[@name='targets']" name="array">1</attr>
|
<attr path="/api/namespace/object[@cname='GtkClipboard']/method[@name='SetWithOwner']" name="hidden">1</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkColorButton']/method[@name='GetColor']/*/*[@name='color']" name="pass_as">out</attr>
|
<attr path="/api/namespace/object[@cname='GtkColorButton']/method[@name='GetColor']/*/*[@name='color']" name="pass_as">out</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkColorSelection']/method[@name='GetColor']" name="hidden">1</attr>
|
<attr path="/api/namespace/object[@cname='GtkColorSelection']/method[@name='GetColor']" name="hidden">1</attr>
|
||||||
<attr path="/api/namespace/object[@cname='GtkColorSelection']/method[@name='GetCurrentColor']/*/*[@name='color']" name="pass_as">out</attr>
|
<attr path="/api/namespace/object[@cname='GtkColorSelection']/method[@name='GetCurrentColor']/*/*[@name='color']" name="pass_as">out</attr>
|
||||||
|
|
Loading…
Add table
Reference in a new issue