From 33fd1cbecea09e56e95daa7b91b5d7b280239e80 Mon Sep 17 00:00:00 2001 From: Christian Hoff Date: Sun, 30 Aug 2009 19:22:43 +0000 Subject: [PATCH] 2009-08-30 Christian Hoff * 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 --- ChangeLog | 6 +++++ gtk/Object.custom | 22 +++++++++++++------ gtk/glue/Makefile.am | 1 - gtk/glue/object.c | 52 -------------------------------------------- 4 files changed, 21 insertions(+), 60 deletions(-) delete mode 100644 gtk/glue/object.c diff --git a/ChangeLog b/ChangeLog index 710b01d36..60ddca3f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-08-30 Christian Hoff + + * gtk/Object.custom: Deglue the floating reference API. + We should consider moving all that stuff to GInitiallyUnowned + as Gtk+ did several releases ago. + 2009-08-30 Christian Hoff * gtk/StatusIcon.custom: Use managed code to pass the address of diff --git a/gtk/Object.custom b/gtk/Object.custom index d1a2a1511..7bd4f4ec2 100755 --- a/gtk/Object.custom +++ b/gtk/Object.custom @@ -132,18 +132,26 @@ InternalDestroyed -= NativeDestroyHandler; } - [DllImport("gtksharpglue-2")] - private static extern bool gtksharp_object_is_floating (IntPtr raw); + [DllImport("libgobject-2.0-0.dll")] + static extern bool g_object_is_floating (IntPtr raw); - [DllImport("gtksharpglue-2")] - private static extern bool gtksharp_object_set_floating (IntPtr raw, bool val); + [DllImport("libgobject-2.0-0.dll")] + static extern void g_object_force_floating (IntPtr raw); + + [DllImport("libgobject-2.0-0.dll")] + static extern void g_object_unref (IntPtr raw); public bool IsFloating { get { - return gtksharp_object_is_floating (Handle); + return g_object_is_floating (Handle); } set { - gtksharp_object_set_floating (Handle, value); + if (value == true) { + if (!IsFloating) + g_object_force_floating (Handle); + } else { + g_object_ref_sink (Handle); + g_object_unref (Handle); + } } } - diff --git a/gtk/glue/Makefile.am b/gtk/glue/Makefile.am index b7f77e486..d49d534e0 100644 --- a/gtk/glue/Makefile.am +++ b/gtk/glue/Makefile.am @@ -3,7 +3,6 @@ lib_LTLIBRARIES = libgtksharpglue-2.la libgtksharpglue_2_la_SOURCES = \ cellrenderer.c \ container.c \ - object.c \ style.c \ vmglueheaders.h \ widget.c diff --git a/gtk/glue/object.c b/gtk/glue/object.c deleted file mode 100644 index 489bad48d..000000000 --- a/gtk/glue/object.c +++ /dev/null @@ -1,52 +0,0 @@ -/* object.c : Glue to clean up GtkObject references. - * - * Author: Mike Kestner - * - * Copyright (c) 2002 Mike Kestner - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the Lesser GNU General - * Public License as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include -#include - -/* Forward declarations */ -void gtksharp_object_unref_if_floating (GObject *obj); -gboolean gtksharp_object_is_floating (GObject *obj); -void gtksharp_object_set_floating (GtkObject *obj, gboolean val); -/* */ - -void -gtksharp_object_unref_if_floating (GObject *obj) -{ - if (GTK_OBJECT_FLOATING (obj)) - g_object_unref (obj); -} - -gboolean -gtksharp_object_is_floating (GObject *obj) -{ - return GTK_OBJECT_FLOATING (obj); -} - -void -gtksharp_object_set_floating (GtkObject *obj, gboolean val) -{ - if (val == TRUE) - GTK_OBJECT_SET_FLAGS (obj, GTK_FLOATING); - else - gtk_object_sink (obj); -} -