summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Janik <timj@imendio.com>2005-12-22 15:10:05 +0000
committerTim Janik <timj@src.gnome.org>2005-12-22 15:10:05 +0000
commit75e6b53a78140092a500dac9c71e438111f1cc9b (patch)
treee1ae9e8976edf902c69f26923243b28d46589f5b /tests
parentfe0fb8966d0bdb58e1cd5fe41082922c433be3ca (diff)
downloadgtk+-75e6b53a78140092a500dac9c71e438111f1cc9b.tar.gz
derive GtkObject from GUnowned, so it initially has a floating reference
Thu Dec 22 16:01:27 2005 Tim Janik <timj@imendio.com> * gtk/gtkobject.c: derive GtkObject from GUnowned, so it initially has a floating reference count. gtk_object_class_init(): installa floating flag handler with libgobject, so for GtkObjects the flag is stored as GTK_FLOATING in the ->flags member. * tests/floatingtest.c: test floating flag uses.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am5
-rw-r--r--tests/floatingtest.c64
2 files changed, 68 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f963b1a6e2..580fe0bda3 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -25,9 +25,11 @@ if USE_X11
testsocket_programs = testsocket testsocket_child
endif
+TESTS = floatingtest
noinst_PROGRAMS = \
autotestfilechooser \
+ floatingtest \
simple \
testaccel \
testcairo \
@@ -77,6 +79,7 @@ noinst_PROGRAMS = \
autotestfilechooser_DEPENDENCIES = $(TEST_DEPS)
simple_DEPENDENCIES = $(TEST_DEPS)
+floatingtest_DEPENDENCIES = $(TEST_DEPS)
testicontheme_DEPENDENCIES = $(TEST_DEPS)
testiconview_DEPENDENCIES = $(TEST_DEPS)
testaccel_DEPENDENCIES = $(TEST_DEPS)
@@ -118,7 +121,7 @@ testmerge_DEPENDENCIES = $(TEST_DEPS)
testactions_DEPENDENCIES = $(TEST_DEPS)
autotestfilechooser_LDADD = $(LDADDS)
-simple_LDADD = $(LDADDS)
+floatingtest_LDADD = $(LDADDS)
testaccel_LDADD = $(LDADDS)
testcairo_LDADD = $(LDADDS)
testcalendar_LDADD = $(LDADDS)
diff --git a/tests/floatingtest.c b/tests/floatingtest.c
new file mode 100644
index 0000000000..458acd887b
--- /dev/null
+++ b/tests/floatingtest.c
@@ -0,0 +1,64 @@
+/* floatingtest.c - test floating flag uses
+ * Copyright (C) 2005 Tim Janik
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#undef GTK_DISABLE_DEPRECATED
+#include "../gtk/gtk.h"
+
+static gboolean destroyed = FALSE;
+static void destroy (void) { destroyed = TRUE; }
+
+int
+main (int argc,
+ char *argv[])
+{
+ GtkWidget *widget;
+ gtk_init (&argc, &argv);
+
+ widget = g_object_new (GTK_TYPE_LABEL, NULL);
+ g_object_connect (widget, "signal::destroy", destroy, NULL, NULL);
+
+ g_assert (GTK_OBJECT_FLOATING (widget));
+ g_assert (g_object_is_floating (widget));
+
+ GTK_OBJECT_UNSET_FLAGS (widget, GTK_FLOATING);
+ g_assert (!GTK_OBJECT_FLOATING (widget));
+ g_assert (!g_object_is_floating (widget));
+
+ GTK_OBJECT_SET_FLAGS (widget, GTK_FLOATING);
+ g_assert (GTK_OBJECT_FLOATING (widget));
+ g_assert (g_object_is_floating (widget));
+
+ g_object_ref_sink (widget);
+ g_assert (!GTK_OBJECT_FLOATING (widget));
+ g_assert (!g_object_is_floating (widget));
+
+ g_object_force_floating (G_OBJECT (widget));
+ g_assert (GTK_OBJECT_FLOATING (widget));
+ g_assert (g_object_is_floating (widget));
+
+ g_object_ref (widget);
+ gtk_object_sink (GTK_OBJECT (widget));
+ g_assert (!GTK_OBJECT_FLOATING (widget));
+ g_assert (!g_object_is_floating (widget));
+
+ g_assert (!destroyed);
+ g_object_unref (widget);
+ g_assert (destroyed);
+
+ return 0;
+}